无法通过centogle VPS上的谷歌smtp发送电子邮件

我想通过谷歌SMTP发送电子邮件。

代码在tomcat中的本地Windows PC中正常运行。 但我在我的centos VPS上遇到了这个错误

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.googlemail.com:465 

这是代码,请检查 –

 // Create the email message HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthenticator(new DefaultAuthenticator("username", "password")); email.setSSLOnConnect(true); email.addTo(e_mail, f_name+" "+l_name); email.setFrom("me@gmail.com", "something.com - Account activation"); email.setSubject("something.com - Account activation email"); // embed the image and get the content id URL url = new URL("http://something.com/out.php/i6964_logo-email.gif"); String cid = email.embed(url, "BizzKiss logo"); // set the html message email.setHtmlMsg("Something"); // set the alternative message email.setTextMsg("Your email client does not support HTML messages"); email.setTLS(true); // send the email email.send(); out.println("Email sent to "+e_mail+"
Please check your email for activation message.Not found? Please check your spam folder."); 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:1401) at org.apache.commons.mail.Email.send(Email.java:1428) at org.apache.jsp.email_jsp._jspService(email_jsp.java:104) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: javax.mail.AuthenticationFailedException: 534-5.7.14 Please log in via your web browser and then try again. 534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787 534 5.7.14 54 qf7sm12328634pac.14 - gsmtp at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826) at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685) 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:1391) ... 30 more

请检查堆栈跟踪,请告诉我有什么问题

即使Gmail帐户凭据正确无误,Google仍可能会阻止身份validation尝试,并怀疑机器人邮件发件人。 要解决此问题,请确保您使用浏览器中的相同Gmail帐户登录,然后打开下面的链接并逐步完成validation过程:

https://accounts.google.com/b/0/DisplayUnlockCaptcha

这将允许访问您的Gmail帐户大约10分钟。 请务必在此时间范围内尝试使用您的代码。

大约半年前,这个技巧对我有所帮助,希望从那时起没有任何改变。

每当脚本尝试自动登录时,Gmail通常会阻止该脚本。 要通过脚本启用登录,请执

  1. 请访问https://security.google.com/settings/security/activity?hl=zh-CN&pli=1
  2. 在登录列表中,选择被阻止的一个并包含服务器的IP。
  3. 在“exception”活动下,单击“更改”并将活动识别为您的活动。

如果您没有列表中的活动,请转到https://accounts.google.com/b/0/DisplayUnlockCaptcha ,然后尝试。

这两个技巧都为我工作了很多次。

如果使用SMTP,则主机名必须为smtp.gmail.com ,端口号可以是465或587 。 您的错误日志通知您的用户名或密码错误,因此请确保您的帐户凭据,然后重试。 请看一下这个谷歌邮件客户端链接。

要通过Gmail启用发送邮件,您必须在Gmail帐户中停用一些安全选项:请参阅https://support.google.com/accounts/answer/6010255

我挂了这个…确保你将“协议”设置为SMTP + SSL。 否则请按照以下说明操作: https : //confluence.jetbrains.com/display/TCD8/Setting+up+Google+Mail+and+Google+Talk+as+Notification+Servers