如何通过Yandex SMTP(C#ASP.NET)发送电子邮件

本文关键字:电子邮件 NET C#ASP 何通过 Yandex SMTP | 更新日期: 2023-09-27 18:30:40

以前,我使用我的服务器作为邮件主机,并通过我自己的主机发送电子邮件。现在,我使用Yandex作为我的邮件服务器。我正在尝试通过Yandex SMTP发送电子邮件。但是,我无法实现它。我每次都收到"操作已超时"消息。当我使用 Thunderbird 时,我可以使用相同的设置发送和接收电子邮件。因此,该帐户没有问题。感谢您的指导。你可以在下面看到我的代码:

EmailCredentials credentials = new EmailCredentials();
credentials.Domain = "domain.com";
credentials.SMTPUser = "email@domain.com";
credentials.SMTPPassword = "password";
int SmtpPort = 465;
string SmtpServer = "smtp.yandex.com";
System.Net.Mail.MailAddress sender = new System.Net.Mail.MailAddress(senderMail, senderName, System.Text.Encoding.UTF8);
System.Net.Mail.MailAddress recipient = new System.Net.Mail.MailAddress(recipientEmail, recipientName, System.Text.Encoding.UTF8);
System.Net.Mail.MailMessage email = new System.Net.Mail.MailMessage(sender, recipient);
email.BodyEncoding = System.Text.Encoding.UTF8;
email.SubjectEncoding = System.Text.Encoding.UTF8;
System.Net.Mail.AlternateView plainView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(System.Text.RegularExpressions.Regex.Replace(mailBody, @"<(.|'n)*?>", string.Empty), null, MediaTypeNames.Text.Plain);
System.Net.Mail.AlternateView htmlView =  System.Net.Mail.AlternateView.CreateAlternateViewFromString(mailBody, null, MediaTypeNames.Text.Html);
email.AlternateViews.Clear();
email.AlternateViews.Add(plainView);
email.AlternateViews.Add(htmlView);
email.Subject = mailTitle;
System.Net.Mail.SmtpClient SMTP = new System.Net.Mail.SmtpClient();
SMTP.Host = SmtpServer;
SMTP.Port = SmtpPort;
SMTP.EnableSsl = true;
SMTP.Credentials = new System.Net.NetworkCredential(credentials.SMTPUser, credentials.SMTPPassword);
SMTP.Send(email);

如何通过Yandex SMTP(C#ASP.NET)发送电子邮件

经过这么多的试验和错误,我找到了如何让它工作的方法。我对问题中发布的代码进行了以下更改:

  • 设置 SmtpPort = 587
  • 添加了以下 2 行代码:

    SMTP。DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;SMTP。使用默认凭据 = 假;

附加说明:我使用 Azure 服务器。后来我意识到我没有为端口 465 配置 smtp 端点。话虽如此,我必须添加上面的 2 行代码才能使电子邮件传递正常工作,仅更改端口是不够的。我的观点是,在进一步执行任何操作之前,值得检查 Azure 和防火墙上定义的端口。

我能够通过从@Uwe和@Dima-Babich那里获得帮助来使我的代码工作,@Rail他们在以下页面上发布了带有ssl的Yandex smtp设置.因此,我认为回答这个问题的功劳应该归于他们。

尝试使用端口 25 而不是 Yandex 帮助中指定的 465。我在 https://habrahabr.ru/post/237899/上找到了此信息。他们提到这可能是由于显式SSL模式是在SmtpClient中实现的。然后端口 25 用于在未加密模式下建立连接,然后打开保护模式。

我遇到了同样的问题。我通过转到Yandex邮件解决了它,然后更改了一些设置。

转到:1-设置。2-向客户端发送电子邮件。3-设置选定的POP3设置即可。