以下是如何在.NET平台实现邮件发送的详细指南,涵盖核心代码与最佳实践:

一、.NET邮件发送核心组件

1. 命名空间依赖

“`csharp

using System.Net;

using System.Net.Mail;

using System.Net.Mime;

“`

2. 核心对象

– `SmtpClient`: 配置SMTP服务器连接

– `MailMessage`: 构建邮件内容

– `Attachment`: 处理附件

二、基础邮件发送实现

“`csharp

// 配置SMTP客户端

var smtpClient = new SmtpClient(“smtp.example.com”)

{

Port = 587, // TLS标准端口

Credentials = new NetworkCredential(“[email protected]”, “password”),

EnableSsl = true,

};

// 创建邮件对象

var mailMessage = new MailMessage

{

From = new MailAddress(“[email protected]”),

Subject = “测试邮件主题”,

Body = “

HTML内容示例

“,

IsBodyHtml = true,

};

mailMessage.To.Add(“[email protected]”);

// 发送邮件

try

{

smtpClient.Send(mailMessage);

Console.WriteLine(“邮件发送成功”);

}

catch (SmtpException ex)

{

Console.WriteLine($”SMTP错误: {ex.StatusCode}”);

}

“`

三、高级功能实现

1. 添加附件

“`csharp

var attachment = new Attachment(“report.pdf”, MediaTypeNames.Application.Pdf);

mailMessage.Attachments.Add(attachment);

“`

2. 多收件人处理

“`csharp

mailMessage.To.Add(“[email protected]”);

mailMessage.CC.Add(“[email protected]”);

mailMessage.Bcc.Add(“[email protected]”);

“`

3. 异步发送

“`csharp

await smtpClient.SendMailAsync(mailMessage);

“`

四、安全配置建议

1. 敏感信息存储

– 使用`appsettings.json`配置:

“`json

“SmtpConfig”: {

“Host”: “smtp.office365.com”,

“Port”: 587,

“UserName”: “[email protected]”,

“Password”: “加密后的密码”

}

“`

2. 连接加密

“`csharp

smtpClient.EnableSsl = true;

smtpClient.UseDefaultCredentials = false;

“`

五、常见问题排查

| 错误现象 | 解决方案 |

||–|

| 身份验证失败 | 检查密码/启用应用专用密码 |

| 连接超时 | 验证防火墙设置/SMTP端口开放状态 |

| 附件被服务器拦截 | 压缩文件或使用白名单格式 |

| 接收方垃圾邮件过滤 | 配置SPF/DKIM域名记录 |

六、最佳实践

1. 使用DI容器注册SmtpClient

“`csharp

services.AddTransient(provider =>

new SmtpClient(config.Host, config.Port)

{

Credentials = new NetworkCredential(…)

});

“`

2. 实现重试机制

“`csharp

var policy = Policy

.Handle()

.WaitAndRetry(3, retryAttempt =>

TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

“`

3. 邮件模板引擎集成

“`csharp

var body = RazorTemplateEngine.Render(“WelcomeTemplate.cshtml”, model);

“`

通过以上实现方案,开发者可快速构建安全可靠的邮件发送功能。建议在正式环境中配合日志监控系统使用,并定期进行邮件送达率测试。