2009-06-29 17 views
3

C#の郵送アプリケーションで作業していますが、基本的に、受信者がメッセージを正常に受信したかどうかを判断する必要があります。失敗理由。電子メールメッセージが正常に送信されるかどうかを確認する

要約すると、電子メールアドレスが存在しないときはいつでも例外がスローされる必要があります。しかし、SmtpClient.Sendはこの場合例外をスローしないので、配信失敗の返信を監視し、解析する必要があります。

私はこれが簡単な作業ではないことを知っていますので、電子メール送信の主な問題を処理する方法について専門家にお尋ねします。

ありがとうございます!

答えて

5

あなたが追跡したハッシュの画像などを使用していない限り、私はセキュリティ上の理由からあなたができるとは思いません。多くのメールクライアントは自動的にイメージをダウンロードしません。

spammersが受信した電子メールを確実に判断できるかどうかを想像してください。

サーバーにpingを実行することもできます。つまりgmail.comですが、どちらが信頼できるかわかりません。

+0

これは本当に(画像付きで)それを行う唯一の方法です。画像が読み込まれていない場合、本当に読みにくいように電子メールを作成してください。受取人に迷惑をかけるが、あなたが本当に必要な場合には仕事を終わらせる。 – colithium

+1

@colithiumあなたは正しいですが、私はあなたのソリューションをお勧めしません。 – alex

+0

私はいくつかの電子メールマーケティング会社は、 "オープン&クリック追跡"のようないくつかの同様の機能を持って参照してください。この種のハッシングメカニズムを使用してトラッキングするのかどうかは疑問です(これは実際には良いアイデアです - 私は個人的に以前考えていませんでした)。 –

4

これを確実に検出できる方法はありません。それはSMTPプロトコルの性質です。電子メールが配信されているかどうかを通知することを選択するのは、受取人のSMTPサーバーまでです。

0

あなたの特定のリクエストは、単に実行可能な方法で実装することはできません。電子メールが正常に送信されたかどうかを判断するためにバウンス電子メールを使用する場合でも、バウンスはすぐには行われず、時には時間がかかることがあります。 、電子メールを受信しなかった場合は、その電子メールを送信したメソッドが例外をスローすることを期待してください)。

あなたのやりたいことに応じて、これを非同期的に行うことで要件を満たすことができます。たとえば、電子メールが返送された場合にすぐに処理する必要のない、メーリングリストアプリケーションを持つクライアントで作業しました。彼らはこれを確実に知る必要さえもしなかった(すなわち、電子メールが受信されなかったが、バウンスしていない、彼らは気にしなかった)。彼らは、電子メールが無効であることを知り、それを購読解除するだけでした。

このアプリケーションはLISTSERVを使用しました。送信される電子メールには、独自の固有のReturn-Pathヘッダーがあります。特定の受信者からNバウンスを受信すると、電子メールは自動的に購読解除され、受信者に関連付けられたデータベースレコードもクリーンアップされます。

LISTSERVなしでこれを実装する簡単な方法があるかどうかはわかりませんが、smtp2webを調べるとよいでしょう。

関連する問題