【问题标题】:How to use explicit SSL with System.Net.Mail SMTP如何在 System.Net.Mail SMTP 中使用显式 SSL
【发布时间】:2019-01-29 06:24:24
【问题描述】:

我已经看到很多隐式 SSL 的示例(用于已弃用的 System.Web.Mail),但我使用的是 System.Net.Mail,并且想要一个代码示例,了解如何通过显式 SSL 发送 SMTP 电子邮件。

我当前的sendEmail 代码如下 - 请注意,如果我设置EnableSsl = true,服务器会返回 500 错误并且永远不会发送电子邮件。我假设因为这是隐式 SSL,System.Net.Mail 不支持:

using System.Net.Mail;
...

    public static void SendEmail(string emailbody)
    {

        MailMessage mailMessage = new MailMessage("myDomain@me.com", "yourDomain@me.com");

        mailMessage.IsBodyHtml = true;

        mailMessage.Body = emailbody;

        mailMessage.Subject = "My email";

        SmtpClient smtpClient = new SmtpClient("smtp.me.com", 25);

        // if false, email sends. If true, email does not send, server returns 500 error
        smtpClient.EnableSsl = false;

        smtpClient.Send(mailMessage);
    }

【问题讨论】:

  • 您的电子邮件提供商为 SSL 电子邮件使用什么端口?
  • 不确定,但我猜是 465
  • 而不是25 作为端口号,你能给出你的邮件服务器的实际启用SSL 的端口号吗? (也将EnableSsl 设置为true)。您还可以看到远程服务器返回的确切错误消息。这有助于排除故障。我们使用以下命令行程序 (caspian.dotconf.net/menu/Software/SendEmail) 来解决邮件问题。根据我们的经验,在大多数情况下,邮件服务器需要进行一些设置更改。 (例如,放宽中继限制等)。因此,来自邮件服务器的确切错误消息很关键。

标签: c# asp.net ssl smtp system.net.mail


【解决方案1】:

你不能。

https://support.microsoft.com/en-us/help/950260/you-cannot-use-system-net-mail-smtpclient-to-send-an-e-mail-message-wi

您应该可以使用 cdo.sys,但它真的很旧,我认为它不再受支持。我也不确定它是否可用或可用,因为它是随 Windows 2000 一起提供的。

最好的办法是设置一个实际的邮件服务器来处理与外界的通信,并使用未加密的端口 25 连接与它通信。如果你有一个专用的小盒子,Postfix 是一个免费的、非常轻量级且非常强大的 SMTP 服务器,它可以很好地工作。

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2010-09-08
    • 2013-09-21
    • 2010-11-16
    • 2010-10-16
    • 2013-02-15
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多