2017-10-05 1 views
0

Ich verwende Javamail, um eine Verbindung mit einem AWS-E-Mail-Dienst herzustellen. Ich habe getestet, dass ich mit diesem Code E-Mails empfangen kann, möchte aber auch eine Antwort mit Daten über die gesendete E-Mail erhalten, z. B. die Nachrichten-ID, mit der AWS eine Nachricht eindeutig identifiziert.So erhalten Sie eine SMTP-Antwort mit Javamail

Ich Mimemessage mit einer E-Mail erstellen und ich sende mit diesem Code in einem Try-Catch-Block:

transport.sendMessage(message, message.getAllRecipients) 

Dieser Code direkt an feuert eine E-Mail an den AWS-Server und ich kann nicht Holen Sie alle Metadaten zurück. Gibt es eine Möglichkeit, auf eine Antwort zu warten, um festzustellen, ob die Nachricht erfolgreich war, damit ich die Nachrichten-ID abrufen kann?

+0

Das ist nicht Teil der SMTP-Spezifikation, also nein - der Server sendet diese Information nicht an den Sender. –

+0

In der Tat. Haben Sie mit dieser Nachricht überprüft, dass Metadaten jemals an den Absender zurückgegeben werden? Gewöhnliches SMTP ist nicht sehr ausführlich, aber nach allem, was ich weiß, könnte Amazon eine Erweiterung haben. Wenn dies der Fall ist, ist das SMTP-Protokoll so einfach, dass es nicht schwer ist, eine Nachricht über Java-Sockets zu senden. JavaMail definiert einen 'TransportListener', aber ich bezweifle, dass es Daten erfassen wird, die keine generischen Inhalte in SMTP sind. –

+0

Ja, die gesendete E-Mail enthält die Metadaten, die ich brauche. Vielen Dank. Ich werde die API-E-Mail-Alternative, die AWS bietet, nutzen. – DarthBinks911

Antwort

0

Wenn die Methode sendMessage zurückgegeben wird, hat der Server die Nachricht akzeptiert. Beachten Sie, dass that doesn't necessarily mean it will be delivered to the recipient jedoch. Aber an diesem Punkt können Sie die getMessageID Methode verwenden, um die Nachrichten-ID abzurufen.

Wenn die send-Methode eine Ausnahme auslöst, weigerte sich der Server aus irgendeinem Grund, die Nachricht zu akzeptieren, und sie wird nicht gesendet.

+0

Das funktioniert, aber ich habe mir die Nachrichten-ID angesehen, die von AWS generiert wurde, und das ist anders. Also muss ich einen Weg finden, diese ID zu bekommen. Danke trotzdem. – DarthBinks911

+0

Sprechen Sie über den Nachrichten-ID-Header in der Nachricht, die der Empfänger erhält? Wenn AWS den Nachrichten-ID-Header beim Senden der Nachricht neu schreibt, was er wirklich nicht tun sollte, bin ich mir nicht sicher, wie ich diese Informationen erhalten soll. Wenn diese Informationen im SMTP-Antwortcode enthalten sind, können die SMTP-Antworten mithilfe von JavaMail überwacht werden. Können Sie die [JavaMail-Debugausgabe] (https://javaee.github.io/javamail/FAQ#debug) posten, die die SMTP-Antwort mit der Nachrichten-ID zeigt? –

Verwandte Themen