问题描述
我正在尝试通过 google SMTP 发送电子邮件.
I am trying to send email via google SMTP.
该代码在我的本地 Windows PC 中的 tomcat 中运行良好.但是我在我的 centos VPS 上遇到了这个错误
The code is working fine in my local windows PC in tomcat.But i got this error on my 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("[email protected]", "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("<html><body>Something</body></html>");
// 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+"<br/>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
请检查堆栈跟踪并告诉我出了什么问题
Please check the stacktrace and please tell me what is wrong
推荐答案
即使 Gmail 帐户凭据正确,Google 仍可能阻止身份验证尝试,怀疑是机器人邮件发件人.要解决此问题,请确保您在浏览器中使用相同的 Gmail 帐户登录,然后打开下面的链接并逐步完成验证过程:
Even if the Gmail account credentials are correct, Google may still block authentication attempt, suspecting a robot mail sender. To fix it, make sure you are logged in using the same Gmail account in your browser, and then open the link below and step through the process of verification:
https://accounts.google.com/b/0/DisplayUnlockCaptcha
这将允许您在大约 10 分钟内访问您的 Gmail 帐户.请务必在此时间范围内尝试您的代码.
This will allow access to your Gmail account for about 10 minutes. Be sure to try your code within this time frame.
这个技巧大约在半年前帮助了我,希望从那以后没有任何改变.
This trick helped me about half a year ago, hope nothing has been changed since then.
这篇关于在 centos VPS 上无法通过 google smtp 发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!