【问题标题】:using simplejavamail, how can i change message-ID?使用 simplejavamail,如何更改消息 ID?
【发布时间】:2017-10-18 09:58:39
【问题描述】:

https://github.com/bbottema/simple-java-mail

我正在使用简单的这个库来发送电子邮件。 有人可以告诉我如何在发送电子邮件之前覆盖 message-ID 吗? 这是我的代码:

Mailer mailer = new Mailer(new ServerConfig(this.smtpHost, this.smtpPort, 
this.from, this.password),TransportStrategy.SMTP_TLS, new 
ProxyConfig(sockHost, sockPort));

mailer.trustAllSSLHosts(true);

mailer.sendMail(new EmailBuilder().from(this.user, this.from).to(to, 
to).subject(this.subject).textHTML(this.body).build());

我在谷歌搜索后拼命尝试这个

 Session session = mailer.getSession();
 MimeMessage m = new testmm(session, "12345@test.test");
 m.saveChanges();

这里是testmm类代码(这里是从另一个主题复制过来的)

 public class testmm extends MimeMessage {
 private String messageID;

 public testmm(Session session, String messageID) {
 super(session);
 this.messageID = messageID;
 }

 @Override
 protected void updateMessageID() throws MessagingException {
 setHeader("Message-ID", messageID);
 }  
 }

当然它不起作用,因为我正在覆盖另一个 MimeMessage 对象,而不是这个 API 中使用的那个。 以前有人发现过这个问题吗? 欢迎任何建议。

【问题讨论】:

  • 我看不到任何明显的方法可以做到这一点,所以我不得不问...为什么要更改 Message-ID?也许有不同的方法来解决你的问题?或者,您可以直接使用 JavaMail API,避免使用 simple-java-mail。
  • 我正在使用 simple-java-mail,因为我需要在发送电子邮件之前连接到 sock 服务器,并且使用 javaMail API 这并不简单。:/
  • JavaMail 支持通过 SOCKS 服务器进行连接,只要 SOCKS 服务器不需要身份验证。请参阅mail.smtp.socks.host property
  • 是的,先生,我没有提到我需要身份验证:/
  • @BillShannon, @DocMoo 其实超级简单:yourEmailBuilder.fixingMessageId("<123@456>");。您希望改进文档吗?

标签: java jakarta-mail mime-types


【解决方案1】:

Simple Java Mail documentation website 实际上明确地描述了用custom Message-ID 覆盖,它再简单不过了!

yourEmailBuilder.fixingMessageId("<123@456>");

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2012-01-12
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多