【以下回答由 GPT 生成】
回答:
该原因可能是由于某些邮件服务器不支持或限制了Disposition-Notification-To字段的传递。目前,很多大型的邮件服务提供商都不再支持该字段,因为它容易被滥用。所以,你在接收到回执时无法获取到该参数的值。
这里有两种解决方案:
-
使用Outlook提供的“回执”功能
Outlook是目前比较常见的邮件客户端之一,它提供了"回执"功能,可以在发送邮件时选择是否请求接收方发送回执。使用这种方式,你无需修改代码,只需要在发送邮件时选择请求回执即可。
-
使用JavaMail库中的MDN(Message Disposition Notification)功能
JavaMail库中提供了MDN功能,可以通过在邮件中插入特定的附件来请求回执。下面是一个示例代码:
import javax.mail.*;
import javax.mail.internet.*;
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("<sender-email>"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("<recipient-email>"));
message.setSubject("<subject>");
MimeBodyPart mdn = new MimeBodyPart();
mdn.setDisposition("notification-mdn");
mdn.setContent("MDN read receipt", "text/plain");
mdn.setHeader("Reporting-UA", "JavaMail");
mdn.setHeader("Original-Recipient", "rfc822;<sender-email>");
mdn.setHeader("Disposition", "manual-action/MDN-sent-manually;processed");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mdn);
message.setContent(multipart);
Transport.send(message);
请将""和""分别替换为发件人和收件人的邮箱地址。
该代码中创建了一个MimeBodyPart对象mdn,通过设置其Disposition属性为"notification-mdn"来请求回执。其余的header信息可以根据需要进行设置。
使用这种方式,你可以自行控制回执功能的实现。但请注意,这种方式需要发送邮件的邮件服务器支持MDN功能。
希望以上解决方案能对你有帮助。如果仍有问题,请提供更多关于你的邮件服务器和接收回执的环境信息,以便提供更准确的解决方案。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^