必须先发出 STARTTLS 命令。使用 Java 和 Google Apps 发送电子邮件

新手上路,请多包涵

我正在尝试使用 Bill the Lizard 的代码 通过 Google Apps 发送电子邮件。我收到此错误:

 Exception in thread "main" javax.mail.SendFailedException: Sending failed;
  nested exception is:
    javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. f3sm9277120nfh.74

    at javax.mail.Transport.send0(Transport.java:219)
    at javax.mail.Transport.send(Transport.java:81)
    at SendMailUsingAuthentication.postMail(SendMailUsingAuthentication.java:81)
    at SendMailUsingAuthentication.main(SendMailUsingAuthentication.java:44)

Bill 的代码包含下一行,这似乎与错误有关:

    props.put("mail.smtp.starttls.enable","true");

但是,它没有帮助。

这些是我的导入语句:

 import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

有谁知道这个错误?

原文由 Sergio del Amo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 753
1 个回答

我发现了问题。以前我使用 j2ee.jar 导入 javax.mail。

我从类路径中删除了 j2ee.jar 并下载了 JavaMail 1.4.1 并将两个 jar,smtp.jar 和 mailapi.jar 放入我的类路径中。我现在使用 smtps 而不是 smtp

 Transport transport = session.getTransport("smtps");

现在 Bill the Lizard 的代码可以工作了。

原文由 Sergio del Amo 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题