Java 如何在使用amazon SES SMTP接口发送电子邮件后获得响应?

Java 如何在使用amazon SES SMTP接口发送电子邮件后获得响应?,java,spring,spring-boot,jakarta-mail,amazon-ses,Java,Spring,Spring Boot,Jakarta Mail,Amazon Ses,文件中说,在发送电子邮件后,无论成功与否,SES都会向发件人返回一个响应,包括消息ID和一个错误(如果发送不成功)。 我想知道如何得到这个答复 我使用SMTP和JavaMail发送电子邮件,如: transport.sendMessage(msg,msg.getAllRecipients()) sendMessage方法不返回任何内容。那么我怎样才能得到回应呢 提前谢谢 更新: 在中国,据说 SMTP返回附加到数据命令的OK响应的邮件ID。 例如:250 Ok 0000aaccaaccaaac

文件中说,在发送电子邮件后,无论成功与否,SES都会向发件人返回一个响应,包括消息ID和一个错误(如果发送不成功)。

我想知道如何得到这个答复

我使用SMTP和JavaMail发送电子邮件,如:
transport.sendMessage(msg,msg.getAllRecipients())

sendMessage
方法不返回任何内容。那么我怎样才能得到回应呢

提前谢谢

更新:

在中国,据说

SMTP返回附加到数据命令的OK响应的邮件ID。 例如:250 Ok 0000aaccaaccaaaccc-ccccaacc-aaaa-cccc-aaaa-accccaaaae-000000


有人能教我如何从OK响应中提取消息ID吗?

您最多可以用
传输
注册一个
传输侦听器
,这个侦听器将用
传输事件
调用。每次传输对象发出诸如
消息已传递
消息未传递
消息已部分传递
之类的事件时,都会调用此TransportListener

你可以这样做-

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

我认为您可以使用配置集。它只需要添加带有配置集标题值的标题X-SES-CONFIGURATION-SET

以下是完整链接:

稍后,当您配置配置集时,您可以将其设置为在SNS上推送传递、跳出等通知。您可以在应用程序中订阅

以下是一个链接:

以及传递对象的链接:

我算出了

我应该使用
SMTPTransport
类的
getLastServerResponse()
方法,例如

        String response = transport.getLastServerResponse();
        System.out.println("response: " + response);
输出将类似于
回复:250 Ok 0100017352b73695-a103f18d-f0a3-4a48-9d86-db1df264a3fe-000000

非常感谢您,虽然还没有解决我的问题,但它很有帮助。我找到一个线程,它说
SMTP返回附加到数据命令的OK响应的消息ID。例如:250 Ok 0000aaccaaccaacccc-ccccaacc-aaaa-cccc-aaaa-accccaaaae-000000
。你能教我如何提取消息ID吗?