发送电子邮件使用共享的电子邮件到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(); 

和它提供了以下异常发送电子邮件使用共享的电子邮件到Gmail

SEVERE: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465 
+0

你能发布整个异常堆栈跟踪吗?异常的原因可能在其中列出。例外是通用的。这可能是一个简单的身份验证失败,也可能是其他问题。欢呼 – aldrin

但这对我来说

Email email = new SimpleEmail(); 
String authuser = "[email protected]"; 
String authpwd = "xxxx"; 
email.setSmtpPort(587); 
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd)); 
email.setDebug(true); 
email.setHostName("smtp.gmail.com"); 
email.getMailSession().getProperties().put("mail.smtps.auth", "true"); 
email.getMailSession().getProperties().put("mail.debug", "true"); 
email.getMailSession().getProperties().put("mail.smtps.port", "587"); 
email.getMailSession().getProperties().put("mail.smtps.socketFactory.port", "587"); 
email.getMailSession().getProperties().put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
email.getMailSession().getProperties().put("mail.smtps.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.setTLS(true); 
email.send(); 
+0

尝试用smtps以及,不起作用 – user217029

+0

也不能与587一起工作..still不起作用 – user217029

+0

再次查看扩展的答案 – jitter

工作不要你需要tell Commons Email that you're sending a TLS email

email.setTLS(true); 

在您致电email.send()之前?

我不确定这是否会解决您的问题,因为我不确定您是否遇到连接到smtp.gmail.com:465的问题或者成功发送给它(错误消息/异常就像你提出的那样是模棱两可的),但是据我所知,这绝对是缺少的东西。

Commons Email用户指南提供了一个使用SSL的Gmail示例。

https://commons.apache.org/proper/commons-email/userguide.html

SSL/TLS(端口465) - > email.setSSLOnConnect(真);

Email email = new SimpleEmail(); 
email.setHostName("smtp.gmail.com"); 
email.setSmtpPort(465); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setSSLOnConnect(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send(); 

STARTTLS(端口587) - > email.setStartTLSEnabled(真);

Email email = new SimpleEmail(); 
email.setHostName("smtp.gmail.com"); 
email.setSmtpPort(587); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setStartTLSEnabled(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send(); 
+0

此代码适合我!谢谢! – Ascension

+0

我正在获取类javax.mail.MessagingException:530 5.7.0必须首先发出STARTTLS命令。 g66sm11757390ywh.8 - gsmtp 异常。但是,我更新了与您的代码相同的代码。 – Curious