可以从 gmail 发送电子邮件,但不能从 yahoo 发送电子邮件

Sending email works from gmail but not yahoo

我的 server.xml

中有以下配置
<Resource name="mail/Session"
              auth="Container"
              type="javax.mail.Session"
              mail.transport.protocol="smtp"
              mail.smtp.starttls.enable = "true"
              mail.smtp.socketFactory.class = "javax.net.ssl.SSLSocketFactory"
              mail.smtp.socketFactory.port="465"
              mail.smtp.host="smtp.gmail.com"
              mail.smtp.port="465"          
              mail.smtp.user="xyz@gmail.com"
              mail.smtp.auth="true"
              password="xyz"
    />

一切正常。但是如果我把它改成我的雅虎账户 在 smtp.mail.yahoo.com 使用用户名和密码,然后我一直验证失败。

为什么会这样?我应该在 yahoo 上启用某些功能还是我做错了什么?

耶!你是对的。这是在您的电子邮件帐户设置中启用 某些内容的游戏。在您的 server.xml 设置中一切正常。只需要为 "less secured apps" 提供访问权限,因为 gmail 阻止安全性较低的它们抛出身份验证异常。因此,只需在 https://myaccount.google.com/lesssecureapps 处启用 "less secure app access" 即可用于 gmail。

既然你说gmail可以用,那你肯定已经做过这个设置了

因此,您只需要为 "yahoo" 帐户找到允许访问权限,就像您为 gmail 帐户所做的那样。您可以在 http://help.inspectionsupport.net/isn-settings/enable-less-secure-apps-for-smtp-use-isn-yahoo-mail OR from official site https://help.yahoo.com/kb/SLN27791.html 此处执行此操作。此设置位于页面底部。

这应该适合你。

也许你必须添加 mail.smtps.auth="true" 属性。