gpt4 book ai didi

Java 邮件 : Exception when sending email

转载 作者:行者123 更新时间:2023-12-04 15:36:18 27 4
gpt4 key购买 nike

第一次使用 java 邮件。我正在关注 this tutorial但我已经无法发送基本消息,并且收到一个非常奇怪的错误:

java.util.ServiceConfigurationError: javax.mail.Provider: Provider com.sun.mail.imap.IMAPProvider not a subtype

奇怪,因为我没有在代码中的任何地方使用 IMAP:
Properties mailProps = new Properties();
mailProps.put("mail.transport.protocol", "smtp");
mailProps.put("mail.host", "smtp.mydomain.com");
mailProps.put("mail.from", "me@mydomain.com");
mailProps.put("mail.smtp.port", "25");

Session session = Session.getDefaultInstance(mailProps);
SMTPMessage m = new SMTPMessage(session);
MimeMultipart content = new MimeMultipart();
MimeBodyPart mainPart = new MimeBodyPart();
mainPart.setText("test");
content.addBodyPart(mainPart);
m.setContent(content);
m.setSubject("Demo message");

m.setRecipient(RecipientType.TO, new InternetAddress("john@example.com"));
Transport.send(m);

错误发生在最后一行(发送)。我知道 smtp 服务器是正确的并且可以工作。

任何建议为什么会发生这种情况以及我如何解决它?

编辑:显然地址/主机在这里发生了变化,我使用的是在实际代码中工作的真实地址。

最佳答案

事实证明我遇到了多个问题:

  • 教程问题

  • 它使用 com.sun.mail.smtp.SMTPMessage但在我的情况下,这不起作用,但使用 javax.mail.internet.MimeMessage工作正常。
  • 错误的根本原因

  • 上面的代码在基于 3rd 方 eclipse 的应用程序中运行,它们似乎相互干扰。可以在 here 中找到此问题的解决方案:
    Thread t =  Thread.currentThread();
    ClassLoader ccl = t.getContextClassLoader();
    t.setContextClassLoader(session.getClass().getClassLoader());
    try {
    Transport.send(m);
    } finally {
    t.setContextClassLoader(ccl);
    }

    相应地调整代码使其工作。

    关于Java 邮件 : Exception when sending email,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59641642/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com