使用Gmail发送电子邮件时出错 [英] Error sending email with 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屋!