当前位置: 首页 > 知识库问答 >
问题:

用gmail发送电子邮件时出错

华季同
2023-03-14

我有以下代码:

 Email email = new SimpleEmail();
    email.setHostName("smtp.googlemail.com");
    email.setSmtpPort(465);
    email.setAuthenticator(new DefaultAuthenticator("ruth.sistem@gmail.com", "XXXXXX"));
    email.setSSLOnConnect(true);
    email.setFrom("ruth.sistem@gmail.com");
    email.setSubject("TestMail");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("ruth.sistem@gmail.com");
    email.send();

我无法连接到gmail,连接出现错误,但是所有连接信息都是正确的,不知道是什么阻止了我发送电子邮件的代码中的连接,我无法发送简单的电子邮件,我一点也不知道它是什么。

 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:1410)
at org.apache.commons.mail.Email.send(Email.java:1437)
at com.observatorioLegislativo.util.EmailTeste.enviaEmailSimples(EmailTeste.java:27)
at com.observatorioLegislativo.util.EmailTeste.<init>(EmailTeste.java:13)
at com.observatorioLegislativo.bean.Teste.main(Teste.java:41)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.googlemail.com,  port: 465;
 nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
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:1400)
... 4 more


Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:317)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:207)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
... 11 more

感谢您的帮助

共有3个答案

董小林
2023-03-14

当我试图使用SimpleEmail从ktor服务器应用程序发送电子邮件时,我也遇到了这种情况。我的情况不同之处在于,我在自定义g-suit域中打开了两步验证,并且无法使用“不太安全的应用程序”设置:

此设置不适用于启用了两步验证的帐户。此类帐户需要特定于应用程序的密码才能访问不太安全的应用程序

我生成了应用程序专用密码并使用它来代替我的主gmail密码,它起作用了。

        val email = SimpleEmail()
        email.hostName = "smtp.gmail.com"
        email.setSmtpPort(587)
        email.setAuthenticator(DefaultAuthenticator("info@customdomain.app", "APPLICATION_SPECIFIC_PASSWORD"))
        email.isSSLOnConnect = true
        email.setFrom("info@customdomain.app")
        email.subject = "TestMail"
        email.setMsg("This is a test mail... :-)")
        email.addTo("foo@bar.com")
        email.send()

创建应用密码信息

太叔栋
2023-03-14

不需要将其放入try and catch中,只需更改gmail中的设置以允许不太安全的应用程序即可。

只需转到:

1.我的账户

2.只要打开它,它就会完成。

img:安全访问映像

松铭
2023-03-14

我相信这段代码摘自《Apache Commons电子邮件API用户指南》。

默认情况下,出于安全原因,GMail会阻止不太安全的应用程序的访问,所以这可能会导致你的问题(就像我的问题一样)。

登录您的GMail帐户并转到以下URL:

<代码>https://www.google.com/settings/security/lesssecureapps

设置为启用。

Email email = new SimpleEmail();

try {
    email.setHostName("smtp.googlemail.com");
    email.setSmtpPort(465);
    email.setAuthenticator(
        new DefaultAuthenticator("hogwarts-mailer@gmail.com", "password"));
    email.setSSLOnConnect(true); // disable in case of EmailException
    email.setFrom("hogwarts-school@gmail.com", "Hogwarts School");
    email.setSubject("Hogwarts Acceptance Letter");
    email.setMsg("We are pleased to inform you that you have a place at "
        + "Hogwarts School of Witchcraft and Wizardry.");
    email.addTo("harry-potter@hedwig.com");
    email.send();

} catch(EmailException ee) {
    ee.printStackTrace();
}

免责声明:

这样做,你就禁用了GMail的一个安全功能。自行承担风险(或使用虚假电子邮件)。

相关阅读:通过Apache Commons电子邮件使用GMail SMTP发送电子邮件

 类似资料:
  • 我用竹子来让我的网站访问者填写并发送一份联系表。 我创建了一个服务帐户 我授予它全域权限 我添加了以下范围:https://www.googleapis.com/auth/gmail.addons.current.action.compose https://www.googleapis.com/auth/gmail.addons.current.message.metadatahttps://w

  • null 我遇到了这个错误: 下面是我的脚本: 我尝试添加作用域,尝试不同的电子邮件等。我也通过登录我的浏览器进行了身份验证。(testemail@gmail.com是一个虚拟电子邮件btw)

  • 需要使用spring boot从gmail发送邮件 但我得到了一个错误,就像 此应用程序没有/error的显式映射,因此您将其视为回退。 出现意外错误(type=内部服务器错误,状态=500)。邮件服务器连接失败;嵌套异常是com.sun.mail.util.MailConnectExc0019:无法连接到主机,端口:smtp.gmail.com,587;超时5000;嵌套异常是:java.net

  • 我正在尝试使用gmail从Delphi发送电子邮件。我有Indy10.5.9.0和Delphi XE3。 我从中获得了示例代码:http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/ 我还尝试了其他示例代码,但结果相同。 我有libeay32.dll和ssleay32.dll从这里:http://w

  • 我正在使用C#使用SMTP和gmail服务器发送电子邮件。 下面是我用于发送电子邮件的代码。我遇到了一些错误,即。 SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。 我做错了什么?我如何使用gmail发送电子邮件。

  • 我的Opencart版本3.0.2.0 我的问题是,电子邮件最近不起作用。我正在使用gmail smtp,几天前它还可以正常工作。但突然,它停止了工作,在检查错误日志时,我在日志下面找到了它。 PHP致命错误:未捕获的异常“异常”,带有消息“错误:服务器未接受密码!”在 /home/MYFOLDERNAME/public_html/system/library/mail/smtp.php:206