7

SmtpClient.NETのクラスとMailMessageクラスを使用してローカルメールサーバー(hMailServerMessage-ID )を介して電子メールを送信したところ、現在、送信されたメッセージのヘッダー値を取得する方法が見つかりませんでした。

背後にある考え方

配信できないメッセージをプログラムで追跡しようとしているので、特定のメッセージを拒否する宛先SMTPサーバーからの応答を識別する方法を見つける必要があります。

Message-IDここで、 SMTPヘッダー値を覚えて、このIDの受信メールを解析することを考えました。

Headersメッセージを送信した後、コレクションを調べようとしましたが、見つかりませんでしMessage-IDた。

私の質問

インスタンスMessage-IDの送信中にSMTPサーバーが追加するヘッダー値を取得することは可能ですか?MailMessage

更新2012-05-27

このMessage-IDのように、送信する直前に、自分で手動で生成しようとしました。

これまでのところ、私の例はすべて機能しているので、これは私の質問に対する解決策のようです。

4

3 に答える 3

5

メールを送信する前に、独自のメッセージIDを追加できます。次のコードを使用します:

Guid id = Guid.NewGuid(); //Save the id in your database 
mensajeEmail.Headers.Add("Message-Id", String.Format("<{0}@{1}>",id.ToString(),"mail.example.com"));

注:OpenPop.Netmessage.Headers.InReplyToを使用するダウンロードメッセージの場合、プロパティを確認すると、メッセージIDが送信されます。

于 2015-07-03T16:26:13.187 に答える
2

問題の標準的な解決策はVERPです。Bernsteinの元の記事を読んで、なぜMessage-Idetal。信頼できません。http://cr.yp.to/proto/verp.txt

于 2012-05-27T20:35:45.383 に答える
2

.NetおよびSMTPクライアント用のMailKitライブラリを使用しています。

SMTPクライアントで送信されたメッセージのIDを取得し、返信されたメッセージを追跡する別の解決策を試しました。

メッセージを送信する前に、メッセージヘッダーに非表示のIDプロパティを追加します。

このサンプルを確認してください

次に続行してメッセージを送信します。約10秒待ってから、IMAPクライアントを使用して送信済みフォルダーを取得し、フォルダー内の各メッセージについて、メッセージヘッダーをループして、いずれかが==messageIdentityであるかどうかを確認します。送信したメッセージを正常に送信し、IDなどの情報を取得します。

于 2019-07-10T08:44:13.317 に答える