Jenkins 电子邮件插件:无法连接到 SMTP 主机:smtp.gmail.com,端口:465;

问题描述 投票:0回答:4

我正在尝试为 Jenkins 构建作业配置电子邮件通知(使用邮件程序插件)。我在 TomEE 中使用 Jenkins。当我尝试测试我的配置时,我得到了 javax.mail.MessagingException:

Failed to send out e-mail

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
java.net.ConnectException: Connection timed out: connect

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)

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 hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:581)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:335)

at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:175)

at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:108)

at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)

at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)

at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:236)

at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)

at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)

at org.kohsuke.stapler.Stapler.service(Stapler.java:238)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)

at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)

at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)

at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)

at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

原因:java.net.ConnectException:连接超时:connect

at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)

at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

at java.net.Socket.connect(Socket.java:589)

at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)

at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:286)

at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:205)

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)

... 82 more

我读到了 Jenkins 的新安全功能,它不允许向非 Jenkins 用户发送邮件。所以我再次尝试在我的 catalina.properties 中添加以下内容:

hudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true
hudson.tasks.MailSender.SEND_TO_USERS_WITHOUT_READ=true

我仍然遇到同样的错误。

任何帮助都会很棒。谢谢。

email jenkins smtp gmail jenkins-plugins
4个回答
1
投票

配置电子邮件服务有时可能会有点令人不安,所以一旦你遇到一些像我一样烦人的问题:

javax. mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465;

或者

javax.mail.AuthenticationFailedException:535-5.7.8 用户名和密码不被接受

如果您遇到这些问题之一,很可能是您不允许电子邮件发件人通过此服务发送电子邮件,因此您所要做的就是登录到您的发件人电子邮件,然后转到 邮件设置 -> 安全性 -> 启用不太安全的应用程序访问

Click on Turn on access(not recommended) then turn it on

另外,请确保您输入了正确的

email
password
,检查
Use SSL
并确保
SMTP Port
为465。

如果错误仍然存在,那么它一定与您的防火墙阻止您使用 Jenkins 发送 SMTP 请求有关,因此要暂时解决此问题,我所要做的就是禁用我的

Avast antivirus
一个小时并测试配置,它起作用了就像魅力一样。

如果您有任何问题,请随时对此答案发表评论,我很乐意为您提供帮助


0
投票

原因:java.net.ConnectException:连接超时:connect

这与最近对 Mailer 插件或 Gmail 中的设置进行的安全更改没有任何关系 - 它表示您的 Jenkins 服务器无法连接到

smtp.gmail.com:465
。可能是由于您的网络内的某些问题、防火墙规则或 ISP 的阻止。

您应该咨询您的网络管理员,询问他们是否有更适合您使用的 SMTP 服务器。


0
投票

我也有同样的问题。 我验证了它实际上不是网络或 gmail 问题,假设您启用了不安全的应用程序(使用应用程序密码中的密码)。这可能是 Jenkins 的错误或某些配置问题。

这是我的设置:

SMTP server: smtp.gmail.com
Use SMTP Authentication: true
User Name: [email protected]
Password: password
Use SSL: true||false #tried both with different combination with TLS
Use TLS: true||false
SMTP Port: 587 || 465

我写了一个小程序,基本上做同样的事情,并在与 Jenkins 相同的服务器上运行它,效果很好。所以,它不是本地网络防火墙什么的。

我的程序的设置是:

SMTP server: smtp.gmail.com
Use SMTP Authentication: true
User Name: [email protected]
Password: password
Use SSL: true
SMTP Port: 587

我的上一份工作是使用 Java 进行 SSLPoking,因为 jenkins 是基于 Java 的。 我使用 465 端口成功,但也无法使用该端口发送。我改用我自己的脚本并运行 shell 脚本。


0
投票

就我而言,重启 Jenkins 服务后一切正常

© www.soinside.com 2019 - 2024. All rights reserved.