2017-10-05 34 views
0

私はAWS電子メールサービスに接続するためにJavamailを使用しています。私はこのコードを使用して電子メールを受信できることをテストしましたが、AWSがメッセージを一意に識別するために使用するメッセージIDなど、送信された電子メールに関するデータを返信したいと考えています。Javamailを使用してSMTP応答を取得する方法

私は電子メールを作成することで、MimeMessageを使用していると私はトライcatchブロック内のコードでそれを送っています:

transport.sendMessage(message, message.getAllRecipients) 

このコードだけでAWSのサーバーに電子メールをオフに発射し、私はできません任意のメタデータを戻します。メッセージIDが取得できるように、メッセージが正常に受信されたかどうかを確認するための応答をリスンする方法はありますか?

+0

これはSMTP仕様の一部ではないため、サーバーはその情報を送信者に送信しません。 –

+0

確かに。このメッセージでチェックしたことがありますか?メタデータが送信者に返されましたか?通常のSMTPはあまり冗長ではありませんが、私が知っている限り、Amazonにはいくつかの拡張機能があるかもしれません。そうであれば、SMTPプロトコルは非常に単純なので、Javaソケットを使用してメッセージを送信するだけではそれほど難しくありません。 JavaMailは 'TransportListener'を定義していますが、SMTPでは一般的なものではないデータを取得することは考えられません。 –

+0

はい、送信されたメールには必要なメタデータが含まれています。ありがとうございます。AWSが提供するAPIのメール代替手段を使用します。 – DarthBinks911

答えて

0

sendMessageメソッドが返された場合、サーバーはメッセージを受け入れました。ただし、that doesn't necessarily mean it will be delivered to the recipientに注意してください。しかしその時点で、getMessageIDメソッドを使用してメッセージIDを取得できます。

sendメソッドで例外がスローされた場合、サーバーは何らかの理由でメッセージの受け入れを拒否し、送信されません。

+0

でこれを行うことができますか?これはうまくいきますが、私はAWSによって生成されたメッセージIDを見てきました。だから私は代わりにこのIDを取得する方法を見つける必要があります。とにかくありがとう。 – DarthBinks911

+0

あなたは受信者が取得するメッセージのMessage-IDヘッダーについて話していますか? AWSが本当にすべきではないメッセージを送信している間にMessage-IDヘッダーを書き換えている場合)、その情報を取得する方法がわかりません。その情報がSMTP応答コードに含まれている場合は、JavaMailを使用してSMTP応答を監視することができます。 Message-IDでSMTPレスポンスを示す[JavaMailデバッグ出力](https://javaee.github.io/javamail/FAQ#debug)を投稿できますか? –

関連する問題