测试可用的C# SMTP发送邮件代码

7 篇文章 0 订阅

以下代码是经过测试,支持国内大部分邮件系统使用的SMTP发送邮件。

  public bool SendEmail(string mailTo, string mailSubject, string mailContent, out string message)
  {
    // 设置发送方的邮件信息,例如使用网易的smtp
    string smtpServer = "smtp.exmail.qq.com"; //SMTP服务器
    string mailFrom = "no-reply@creativestar.cn"; //登陆用户名
    string userPassword = "xxxxxxxx";//登陆密码
    message = string.Empty;

    // 发送邮件设置       
    MailMessage mail = new MailMessage();
    mail.Subject = mailSubject; //主题
    mail.BodyFormat = MailFormat.Html;
    mail.Body = System.IO.File.ReadAllText(Page.MapPath("mail.html"), System.Text.Encoding.UTF8).Replace("{0}", mailContent); //内容
    mail.BodyEncoding = System.Text.Encoding.UTF8; //正文编码
    mail.From = mailFrom;
    mail.To = mailTo;
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", mailFrom);
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", userPassword);
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "465");
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
    try
    {
      SmtpMail.SmtpServer = smtpServer;
      SmtpMail.Send(mail);
      return true;
    }
    catch (Exception ex)
    {
      message = ex.Message;
      return false;
    }
  }

注意成功的引用库是System.Web.Mail

using System.Web.Mail;

而不是System.Net.Mail

using System.Net.Mail;

虽然VS编辑器提示System.Web.Mail已经过时,应该用System.Net.Mail替代。
系统提示用System.Web.Mail替代System.Net.Mail但System.Net.Mail.SmtpClient并不支持SSL/TLS1.3加密,而大部分国内的SMTP发件服务器都是用SSL/TLS1.3加密版本,导致邮件发送失败。
而System.Web.Mail.SmtpClient虽然已经过时,但他支持SSL/TLS1.3加密方法呀。
所以,这是一个微软的混乱版本管理实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值