C#使用SmtpClient发送带HTML格式邮件的方法

Owen
Owen
发布时间:2026-10-13 | 5人浏览过
原创

利用C#中System.Net.Mail库的SmtpClient类,可以通过几行代码实现基于SMTP协议的邮件发送。该方法支持自定义发件人、服务器地址、账号密码以及收件人信息,并允许设置正文为HTML格式。

核心组件与准备

要实现SMTP邮件发送,必须在项目中引用 System.Net.Mail 命名空间。该命名空间提供了 SmtpClient(负责连接和传输)与 MailMessage(负责构建邮件内容)两个关键类。

第1步:配置SmtpClient实例

首先需要初始化一个客户端对象,并设定以下关键参数:

  • Host: SMTP服务器域名或IP(如 smtp.163.com)。
  • Credentials: 使用 NetworkCredential 封装登录用户名和密码。注意此处通常要求使用授权码而非邮箱原始密码。
  • DeliveryMethod: 设置为 SmtpDeliveryMethod.Network 表示通过网络直接发送。

第2步:构建MailMessage内容

接着实例化 MailMessage 对象,填写发件人与收件人地址。为了让邮件能够正常显示中文,需显式指定编码格式为UTF-8。同时启用HTML模式以支持富文本渲染。

public static bool SendSmtpEmail(string MailFrom,string MailServer,string MailUserName,string MailPassword,string mailto,string title,string msg)
{
    var client = new SmtpClient();
    client.Host = MailServer;
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential(MailUserName, MailPassword);
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    System.Net.Mail.MailMessage message = new MailMessage(MailFrom, mailto);
    message.Subject = title;
    message.Body = msg;
    
    // 必须处理中文编码问题
    message.SubjectEncoding = System.Text.Encoding.UTF8;
    message.BodyEncoding = System.Text.Encoding.UTF8;
    
    // 开启HTML格式支持
    message.IsBodyHtml = true;
    message.Priority = MailPriority.High;

    try
    {
        client.Send(message);
        return true;
    }
    catch
    {
        return false;
    }
}

操作注意事项

安全提醒:在实际生产中,强烈建议不要在代码中以明文形式暴露邮箱密码。应当将凭证存储在配置文件中或使用环境变量获取。

异常处理:上述代码展示了基本的Try-Catch结构用于判断成功与否。但在复杂网络环境下,抛出具体异常往往有助于排查问题,例如“550 权限验证失败”或“超时错误”。

完成判断与排错

  • 状态确认: 调用返回 true 即表示数据已成功提交至SMTP服务器队列。
  • 常见问题: 如果发生阻塞,通常是端口未开放或被ISP拦截。现代云服务商通常会限制25号端口,可能需要改用465(SSL)或587(STARTTLS)端口并配置相关属性。

以上就是C#实现简单电子邮件发送操作的详细内容,更多关于C#编程实用技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表