使用Gmail发送电子邮件时出错 [英] Error sending email with gmail

查看:280
本文介绍了使用Gmail发送电子邮件时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码:

  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(这是测试邮件...... :-));
email.addTo(ruth.sistem@gmail.com);
email.send();

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

  org.apache.commons.mail.EmailException:将电子邮件发送到以下服务器失败:org.apache.commons.mail.Email.sendMimeMessage上的smtp.googlemail.com:465 
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)
引起by:javax.mail.MessagingException:无法连接到SMTP主机:smtp.googlemail.com,port:465;
嵌套异常是:
java.net.ConnectException:连接超时:在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


引起:java.net.ConnectException:连接超时:在java.net.DualStackPlainSocketImpl.waitForConnect(本机方法)连接
java.net.DualStackPlainSocketImpl.socketConnect
(未知来源)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlain SocketImpl.connect(未知来源)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket。连接(未知来源)
at sun.security.ssl.SSLSocketImpl.connect(未知来源)
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更多

感谢帮助

解决方案

我认为该片段取自


I have the following code:

 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();

I can not connect to gmail, an error burst with connection appears, however all connection information are correct, do not know what is blocking the connection from my code for sending the email, I can not send a simple email and I do not slightest idea what it is.

 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

appreciate the help

解决方案

I believe that snippet is taken from the Apache Commons Email API User Guide.

GMail blocks Access for less secure apps by default for security reasons so this might be causing your problem (as it did mine).

Log in to your GMail account and go to this URL:

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

Set to Enable.

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).

Related reading: Sending E-Mail Using GMail SMTP via Apache Commons Emails

这篇关于使用Gmail发送电子邮件时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆