java - 使用 Gmail 发送电子邮件时出错

标签 java jakarta-mail

我有以下代码:

 Email email = new SimpleEmail();
    email.setHostName("smtp.googlemail.com");
    email.setSmtpPort(465);
    email.setAuthenticator(new DefaultAuthenticator("ruth.sistem@gmail.com", "XXXXXX"));
    email.setSSLOnConnect(true);
    email.setFrom("ruth.sistem@gmail.com");
    email.setSubject("TestMail");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("ruth.sistem@gmail.com");
    email.send();

我无法连接到 gmail,出现连接突发错误,但是所有连接信息都是正确的,不知道是什么阻止了我发送电子邮件的代码的连接,我无法发送简单的电子邮件,但我可以一点也不知道它是什么。

 org.apache.commons.mail.EmailException: Sending the email to the following server failed :                                                          smtp.googlemail.com:465
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410)
at org.apache.commons.mail.Email.send(Email.java:1437)
at com.observatorioLegislativo.util.EmailTeste.enviaEmailSimples(EmailTeste.java:27)
at com.observatorioLegislativo.util.EmailTeste.<init>(EmailTeste.java:13)
at com.observatorioLegislativo.bean.Teste.main(Teste.java:41)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.googlemail.com,  port: 465;
 nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400)
... 4 more


Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:317)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:207)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
... 11 more

感谢帮助

最佳答案

我相信该片段取自 Apache Commons Email API User Guide .

出于安全原因,GMail 默认阻止访问不太安全的应用,因此这可能会导致您出现问题(就像我的问题一样)。

登录您的 GMail 帐户并访问此 URL:

https://www.google.com/settings/security/lesssecureapps

enter image description here

设置为启用

Email email = new SimpleEmail();

try {
    email.setHostName("smtp.googlemail.com");
    email.setSmtpPort(465);
    email.setAuthenticator(
        new DefaultAuthenticator("hogwarts-mailer@gmail.com", "password"));
    email.setSSLOnConnect(true); // disable in case of EmailException
    email.setFrom("hogwarts-school@gmail.com", "Hogwarts School");
    email.setSubject("Hogwarts Acceptance Letter");
    email.setMsg("We are pleased to inform you that you have a place at "
        + "Hogwarts School of Witchcraft and Wizardry.");
    email.addTo("harry-potter@hedwig.com");
    email.send();

} catch(EmailException ee) {
    ee.printStackTrace();
}

DISCLAIMER:

By doing so, you have disabled one of GMail's security features. Proceed at your own risk (or use a dummy email).

相关阅读: Sending E-Mail Using GMail SMTP via Apache Commons Emails

关于java - 使用 Gmail 发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26393906/

相关文章:

java - 如何正确删除catalina.out?

Java 和 JSTL/EL : How can I compare two integers stored as attributes?

java - 在 Android 上使用 JavaMail 验证电子邮件

java - 适用于生产消息传递的 Gmail SMTP

java - 如何使用 javamail 将 base64 图像嵌入到电子邮件中

java - JAVA发送邮件时出现空指针异常

java - 如何在将字符串粘贴到 JSpinner 之前验证和修改它?

java - HTTP header 中的非法字符

java - 为什么复制对象不会影响第一个对象?

java - 使用 Map 发送内嵌图像 javaMail Google App Engine