【发布时间】:2018-11-19 06:05:52
【问题描述】:
我无法使用 yahoo 客户端发送电子邮件。相同的代码和端口适用于 gmail 凭据。
在我的本地系统中测试这个。
var fromAddress = new MailAddress("myname@yahoo.com", "My Name");
var toAddress = new MailAddress("validemail@yahoo.com", "");
var smtp = new SmtpClient
{
Host = "smtp.mail.yahoo.com",
Port = 587,
EnableSsl = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, "P@s5word")
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = emailSubject,
Body = emailBody,
IsBodyHtml = true
})
{
//turning the security off for testing
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
smtp.Send(message);
}
也尝试启用 SSL,但没有成功。
更新:
我意识到在这种情况下需要使用 oAuth2。我在 Yahoo 中为我的项目创建了一个应用,并拥有客户端 ID 和客户端密码。
我找不到有关如何使用这些详细信息通过 Yahoo 发送电子邮件的任何信息。
【问题讨论】:
-
您需要使用 OAuth2 身份验证,因为 Yahoo 更改了使用凭据发送邮件的策略(请参阅this issue),并且可能需要额外的 OAuth 库。
-
@TetsuyaYamamoto 你能否帮我提供一个代码示例,用于使用 oauth 与雅虎发送电子邮件。我找不到任何东西。那些,只谈论获取访问令牌,我不知道之后如何进行。谢谢。
标签: c# smtp yahoo-mail