以下是如何在.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
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);
“`
通过以上实现方案,开发者可快速构建安全可靠的邮件发送功能。建议在正式环境中配合日志监控系统使用,并定期进行邮件送达率测试。