0

我对此进行了研究,但找不到真正完整的答案。许多人,包括我自己,都能够通过 C# System.Net.Mail 使用端口 25 或 587 发送电子邮件,而不是使用 SSL。例如,请参见此处: https ://stackoverflow.com/questions/1317809/sending-email-using-a-godaddy-account

其他人有一个使用 System.Web.Mail 的解决方案,但该解决方案已过时: 如何使用 .NET Framework 通过 SSL SMTP 发送电子邮件?

但是,似乎没有人有解决方案如何使用带有端口 465 的 SSL 发送电子邮件。有没有人有解决方案,或者至少知道为什么 SSL 在 C# 中不起作用?

这是我正在使用的代码:

try
{
    MailMessage mail = new MailMessage("sender@yourdomain.com", receivingEmail, subject, body);
    string host = "smtpout.secureserver.net";
    int port = 465; // it's 465 if using SSL, otherwise 25 or 587
    SmtpClient smtpServer = new SmtpClient(host, port);
    smtpServer.Credentials = new NetworkCredential("sender@yourdomain.com", "yourpassword");
    smtpServer.EnableSsl = true;
    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpServer.Send(mail);
}
catch (Exception ex)
{
    // do something with the exception
    ...
}
4

2 回答 2

3

.NET 内置邮件类不支持所需的 SSL 方法(隐式 SSL),与此无关:原因在此处解释

存在执行显式和隐式 SSL 并具有其他很酷功能的第三方 SMTP 客户端组件。例如,Rebex.Mail或我们的SecureBlackbox

于 2012-06-04T16:25:28.733 回答
0

它不起作用的原因在于 SmtpClient 的体系结构。SmtpClient 旨在使用纯文本而不是 ssl 建立连接。

但是,您可以使用 native.net 重新编写发件人。

试试看 [Aegis Implicit Mail (AIM)] ( http://netimplicitssl.sourceforge.net/ ) ,它是开源的,它的代码风格和架构与 System.Net.Mail 完全一样

您可以在 [此处] ( https://sourceforge.net/p/netimplicitssl/wiki/Home/ )找到有关 465(隐式“SSL”)和其他端口(显式“TLS”)的详细信息

你可能是:

try
{
    MimeMailMessage mail = new MailMessage("sender@yourdomain.com", receivingEmail, subject, body);

   string host = "smtpout.secureserver.net";
    int port = 465; // it's 465 if using SSL, otherwise 25 or 587
    MimeMailer smtpServer = new MimeMailer(host, port);
    smtpServer.Credentials = new NetworkCredential("sender@yourdomain.com", "yourpassword");
    smtpServer.EnableSsl = true;
    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpServer.Send(mail);
}
 catch (Exception ex)
{
    // do something with the exception
    ...
}
于 2014-09-24T10:11:20.147 回答