@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NETでのメール再送方法

1
投稿者投稿内容
WiRIO
会議室デビュー日: 2006/12/06
投稿数: 2
投稿日時: 2006-12-06 19:04
ASP.NET(C#)にてDBへある登録処理後にメールを送信するWeb
ページを作っています。

メール送信のクラスSystem.Net.Mail.SmtpClientを用いて
pop認証後に送信処理を行い、送信が成功する場合が多いの
ですが、時々エラーで送信できないことがあります。
この場合にSmtpException等を用いてエラーをcatchしているの
ですが、送信を失敗した場合のメールの再送処理方法に悩んで
おります。(対処方法はWebでも検索してみたのですが、具体的
なものが見つからず未だ悩み続けています。)


エラーの例
-------------------------------------------------------

System.Net.Mail.SmtpException: メールを送信できませんでした。
---> System.IO.IOException: 転送接続からデータを読み取れません:
確立された接続がホスト コンピュータのソウトウェアによって中止
されました。。
---> System.Net.Sockets.SocketException: 確立された接続がホスト
コンピュータのソウトウェアによって中止されました。

-------------------------------------------------------

送信できなかった場合に、数回送信トライを繰り返すことをまず
考えたのですが、バックグラウンドでその処理を行えるものか、
またSMTPサーバーが応答しない場合には、時間をおいて送信を行う
ようにすべきかなど、どのような対処が適当か教えていただければ
幸いです。
よろしくお願いいたします。


[ メッセージ編集済み 編集者: WiRIO 編集日時 2006-12-07 10:22 ]
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-12-06 23:07
POP認証に送信ということは外部のSMTPサーバですよね?であればある程度の確率で「繋げない」状況はありそうです。

一般的にはSMTPサーバとしてlocalhostを指定します。つまり同じサーバでSMTPサービスを立ち上げて、外部SMTPサーバとのやりとりはそちらに(接続出来なかった場合の再送処理なども含めて)まかせるのが吉だと思います。

そういえばこういうケースもありましたね(この場合もLAN内のSMTPだと思います)。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35245&forum=6
WiRIO
会議室デビュー日: 2006/12/06
投稿数: 2
投稿日時: 2006-12-07 10:54
ご回答ありがとうございます。
ソースレベルで考えるのではなく、ローカルのSMTPサービスに
任せてしまうのですね。解決策になりそうです!

[ メッセージ編集済み 編集者: WiRIO 編集日時 2006-12-07 10:54 ]
1

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