- PR -

smtpmailで存在しないメールアドレスへ送信した場合のエラー処理

1
投稿者投稿内容
tamtam
会議室デビュー日: 2005/02/21
投稿数: 2
投稿日時: 2005-02-21 13:14
システムで作成したファイルをメールにてユーザーへ送付するプログラムを作成しています。
この時、存在しないアドレスへメールをした場合、プログラムでExceptionを取ることはできないのでしょうか?
現在、以下のような作りになっていますが、存在しないアドレスへメールを送信した場合も正常終了してしまい、エラー処理を行うことができません。

----------------------------------------------------------------
Try
System.Web.Mail.SmtpMail.SmtpServer = "smtp.server"
Dim Message As New System.Web.Mail.MailMessage()
Message.From = "TEST@test.jp"
Message.To = TEST@test.jp1 '存在しないアドレス
Message.Subject = "タイトル"
Message.Body = "本文"
Dim attachment As New System.Web.Mail.MailAttachment("添付ファイル", _
Web.Mail.MailEncoding.Base64)
Message.Attachments.Add(attachment)
System.Web.Mail.SmtpMail.Send(Message)

Catch ex As Exception
'エラー処理
Call ErrProc
ErrMsg = ex.ToString
mblnErrFlg = True
Exit Function
End Try
------------------------------------------------------------------

ちなみに、FROMのメールアドレスは存在しないアドレスです。このため、メール送信エラーが誰かに通知されることはありません。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-02-21 14:01
SMTPの仕組みを勉強していただけば、配送エラーの検出が容易ではない事は直ぐに分かるかと思います。

Fromアドレスに実在しないメールアドレスを入れるなどと言う事は止めておいたほうが良いでしょう。そもそもルールを無視しているし、スパムメールとして排除される可能性が高いです。まさか本番もtest.jpで送信したりはしてないですよね?test.jpと言うドメインは実在しますよ。

Fromアドレスに実在するメールアドレスを入れておけば、エラーメールが返送されてきます。エラーメールを受信したらエラーとして扱うのが順当でしょう。

最近はスパム対策の一環でエラーメールを送り返さないようにメールサーバーを設定している事も多いです。配送エラーを確実に検出する方法は無いと思ったほうが良いでしょう。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
tamtam
会議室デビュー日: 2005/02/21
投稿数: 2
投稿日時: 2005-02-21 14:21
ありがとうございます。
知識不足&勉強不足でした。

プログラムの仕様を考え直したいと思います。
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-02-22 12:26
もう既に解決済みなら不要ですが…。
私はMXレコードかAレコードが存在しない場合、エラーを返す、と言う
入力精査を行っております。さすがにアカウントが存在するかまでは確認できませんが。
(.Netで上記のようなプログラムが書けるかわかりませんが、私は市販のDLLを使っています)

どのようなものを作りたいのか不透明ですが、
メールサーバー側でメール着信時にプログラムを起動させる、と言うことがメールサーバーに
よっては出来ますので、エラーメールに反応して何か行うことは出来ます。
これは多少面倒ですが。
1

スキルアップ/キャリアアップ(JOB@IT)