1
votes

Comment obtenir la réponse après l'envoi d'un e-mail à l'aide de l'interface SMTP d'Amazon SES?

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. entrez la description de l'image ici 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?


0 commentaires

3 Réponses :


1
votes

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());
    }
});


1 commentaires

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?



0
votes

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


0 commentaires

0
votes

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


0 commentaires