Le document indique qu'après l'envoi d'un e-mail, qu'il ait réussi ou non, SES renverra une réponse à l'expéditeur, en incluant l'ID du message et une erreur s'il n'a pas été envoyé avec succès. https://docs.aws.amazon.com/ ses / latest / DeveloperGuide / send-concepts-process.html
Je me demande comment obtenir cette réponse?
J'utilise SMTP et JavaMail pour envoyer des e-mails, comme:
transport.sendMessage (msg, msg.getAllRecipients ());
La méthode sendMessage
ne renvoie rien. Alors, comment puis-je obtenir la réponse?
Merci d'avance!
Mise à jour:
Dans https://forums.aws.amazon.com/thread. jspa? messageID = 363239 , on dit que
SMTP renvoie l'ID de message ajouté à la réponse OK à la commande DATA. Par exemple: 250 Ok 0000aaaaccccaaaacccc-ccccaacc-aaaa-cccc-aaaa-acccccaaaaae-000000
Quelqu'un pourrait-il m'apprendre comment extraire l'ID de message de la réponse OK?
3 Réponses :
Au mieux, vous pouvez enregistrer un TransportListener
avec Transport
, cet écouteur sera appelé avec TransportEvent
. Ce TransportListener est appelé chaque fois que l'objet Transport émet un événement comme MESSAGE_DELIVERED
, MESSAGE_NOT_DELIVERED
, MESSAGE_PARTIALLY_DELIVERED
.
Vous pouvez faire quelque chose comme ça -
// Create a transport. Transport transport = session.getTransport(); //Register your event listener //This TransportListener is called every time Transport object emits an events like `MESSAGE_DELIVERED`, `MESSAGE_NOT_DELIVERED`, `MESSAGE_PARTIALLY_DELIVERED`. transport.addTransportListener(new TransportListener() { @Override public void messageDelivered(TransportEvent transportEvent) { System.out.println("From Message Delivered"); System.out.println(transportEvent.getMessage()); } @Override public void messageNotDelivered(TransportEvent transportEvent) { System.out.println("From Message Not Delivered"); System.out.println(transportEvent.getMessage()); } @Override public void messagePartiallyDelivered(TransportEvent transportEvent) { System.out.println("From Message Partially Delivered"); System.out.println(transportEvent.getMessage()); } });
Merci beaucoup, cela aide mais n'a pas résolu ma question. J'ai trouvé un fil de discussion, forums.aws.amazon.com/thread.jspa?messageID = 363239 , et il dit SMTP renvoie l'ID de message ajouté à la réponse OK à la commande DATA. Par exemple: 250 Ok 0000aaaaccccaaaacccc-ccccaacc-aaaa-cccc-aaaa-acccccaaaaae-00 0000
. Pourriez-vous m'apprendre comment extraire l'ID du message?
Je pense que vous pouvez utiliser le jeu de configuration pour cela. Il suffit d'ajouter un tel en-tête X-SES-CONFIGURATION-SET avec la valeur du titre de votre jeu de configuration.
Voici le lien complet: https: //docs.aws.amazon.com/ses/latest/DeveloperGuide/send-using-smtp-java.html
Plus tard, lorsque vous configurez le jeu de configuration, vous pouvez le configurer pour envoyer les notifications de livraison, de rebond, etc. sur SNS. Auquel vous pouvez vous abonner dans votre application.
Voici un lien: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets-in-email.html
Et le lien pour l'objet de livraison: https://docs.aws.amazon. com / ses / latest / DeveloperGuide / notification-contents.html # delivery-object
Je l'ai fugué.
Je devrais utiliser la méthode getLastServerResponse ()
de la classe SMTPTransport
, telle que
String response = transport.getLastServerResponse(); System.out.println("response: " + response);
La sortie sera comme
réponse: 250 Ok 0100017352b73695-a103f18d-f0a3-4a48-9d86-db1df264a3fe-000000