使用 Commons-Email 向 Gmail 发送电子邮件
Email email = new SimpleEmail();
String authuser = "[email protected]";
String authpwd = "*******";
// Very Important, Don't use email.setAuthentication()
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(true); // true if you want to debug
email.setHostName("smtp.gmail.com");
email.getMailSession().getProperties().put("mail.smtp.auth", "true");
email.getMailSession().getProperties().put("mail.debug", "true");
email.getMailSession().getProperties().put("mail.smtp.port", "465");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.port", "465");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.fallback", "false");
email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true");
email.setFrom("[email protected]", "SenderName");
email.setSubject("TestMail");
email.setMsg("This is a test mail?");
email.addTo("[email protected]", "ToName");
email.send();
它给出了以下异常
SEVERE: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
Email email = new SimpleEmail();
String authuser = "[email protected]";
String authpwd = "*******";
// Very Important, Don't use email.setAuthentication()
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(true); // true if you want to debug
email.setHostName("smtp.gmail.com");
email.getMailSession().getProperties().put("mail.smtp.auth", "true");
email.getMailSession().getProperties().put("mail.debug", "true");
email.getMailSession().getProperties().put("mail.smtp.port", "465");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.port", "465");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
email.getMailSession().getProperties().put("mail.smtp.socketFactory.fallback", "false");
email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true");
email.setFrom("[email protected]", "SenderName");
email.setSubject("TestMail");
email.setMsg("This is a test mail?");
email.addTo("[email protected]", "ToName");
email.send();
and it gives the following exception
SEVERE: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Commons Email 用户指南提供了使用 SSL 的 Gmail 示例。
https://commons.apache.org/proper/commons-email/userguide.html
< strong>SSL/TLS(端口 465) -> email.setSSLOnConnect(true);
STARTTLS(端口 587) -> email.setStartTLSEnabled(true);
The Commons Email user guide has an example for Gmail using SSL.
https://commons.apache.org/proper/commons-email/userguide.html
SSL/TLS (Port 465) -> email.setSSLOnConnect(true);
STARTTLS (Port 587) -> email.setStartTLSEnabled(true);
这对我有用
This does work for me
您不需要 告诉Commons Email 表明您正在发送 TLS 电子邮件:
在调用 email.send() 之前?
我不确定这是否会解决您的问题,因为我不确定您是否在连接到 smtp.gmail.com:465 或成功发送到它时遇到问题(错误消息/异常是不明确的,因为您已经介绍过了),但据我所知,这绝对是缺少的东西。
Don't you need to tell Commons Email that you're sending a TLS email:
prior to your call to email.send()?
I'm not sure if this will fix what ails you, since I'm not sure whether you're experiencing a problem connecting to smtp.gmail.com:465 or successfully sending to it (the error message/exception is ambiguous as you've presented it), but it's definitely something that's missing so far as I can tell.
如果您想使用 TLS,请使用端口 587 和 starttls:
如果您想使用端口 465,则不要将此设置为 true,而是调用以下函数:
if you want to use TLS use port 587 and starttls:
If you want to use port 465 then do not set this true but call below functions:
不要忘记启用 Google 安全性较低的应用访问。
Don't forget to enable google Less secure app access.