Mah*_*ran 10 java spring smtp jakarta-mail
我正在使用org.springframework.mail.javamail.JavaMailSenderSMTP发送电子邮件,我需要检索Message-ID标头.以下代码
message.getMimeMessage().getMessageID()
Run Code Online (Sandbox Code Playgroud)
返回null.如何检索消息ID?
public void notifyByMail(final NotificationRequest request)
{
MimeMessagePreparator preparator = new MimeMessagePreparator()
{
public void prepare(MimeMessage mimeMessage) throws Exception
{
MimeMessageHelper message = null;
message = new MimeMessageHelper(mimeMessage, UTF_8);
message.setTo(request.getTo());
message.setCc(request.getCc());
message.setFrom(request.getFrom());
message.setReplyTo(request.getReplyTo());
message.setSubject(request.getSubject());
message.setText("some text", true);
//Need to retrieve the Message-ID here
System.out.println("Message - ID : " + message.getMimeMessage().getMessageID());
}
};
getMailSender().send(preparator);
}
Run Code Online (Sandbox Code Playgroud)
Bil*_*non 14
尝试message.getMimeMessage().saveChanges()之前message.getMimeMessage().getMessageID().
创建消息时也需要这样:
MimeMessage msg = new MimeMessage(session) {
protected void updateMessageID() throws MessagingException {
if (getHeader("Message-ID") == null)
super.updateMessageID();
}
};
Run Code Online (Sandbox Code Playgroud)
这会导致Message-ID标头仅在第一次设置时才设置(如果尚未设置).
在发送消息之前,未设置messageID。
如果要设置自定义消息,我相信您需要像这样覆盖MimeMessage:
public class MyMimeMessage extends MimeMessage {
private String messageID;
public MyMimeMessage(Session session, String messageID) {
super(session);
this.messageID = messageID;
}
@Override
protected void updateMessageID() throws MessagingException {
setHeader("Message-ID", messageID);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,某些电子邮件服务(例如gmail)要求messageID符合某种语法(几乎类似于电子邮件地址),您可以在此处查看
| 归档时间: |
|
| 查看次数: |
9757 次 |
| 最近记录: |