使用SmtpClient和MailMessage类可发送带附件邮件,需添加System.net和System.Net.mail命名空间;2. 创建MailMessage设置发件人、收件人、主题、正文并添加Attachment对象;3. 配置SmtpClient指定SMTP服务器(如Gmail的smtp.gmail.com:587),启用ssl,提供凭据后调用Send方法发送;4. 注意使用应用专用密码、确保文件路径存在,并推荐.NET 6+改用MailKit。

在 .NET 中发送带附件的电子邮件,可以使用 SmtpClient 和 MailMessage 类。下面是一个简单实用的示例,展示如何通过 Gmail 或其他 SMTP 服务发送带附件的邮件。
1. 添加必要的命名空间
using System.Net;
using System.Net.Mail;
2. 创建并配置邮件消息
使用 MailMessage 设置发件人、收件人、主题、正文,并添加附件:
// 创建邮件对象
MailMessage mail = new MailMessage();
mail.From = new MailAddress(“your_email@gmail.com”);
mail.To.Add(“recipient@example.com”);
mail.Subject = “测试带附件的邮件”;
mail.Body = “这是带有附件的测试邮件内容。”; // 添加附件(例如一个本地文件)
Attachment attachment = new Attachment(@”C:temptest.pdf“);
mail.Attachments.Add(attachment);
3. 配置 SMTP 客户端并发送
使用 SmtpClient 连接到邮件服务器并发送邮件。以 Gmail 为例:
SmtpClient client = new SmtpClient(“smtp.gmail.com”, 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential(“your_email@gmail.com”, “your_app_password“); // 发送邮件
try
{
client.Send(mail);
console.WriteLine(“邮件发送成功!”);
}
catch (Exception ex)
{
Console.WriteLine(“发送失败: ” + ex.Message);
}
finally
{
mail.Dispose();
attachment.Dispose();
}
注意事项
- 如果使用 Gmail,需要开启两步验证,并使用应用专用密码代替账户密码。
- 附件路径必须存在,否则会抛出异常。
- .NET 6 及以上版本推荐使用 MailKit 替代过时的 SmtpClient(SmtpClient 已被标记为过时)。
- 确保防火墙或网络允许 SMTP 连接(端口 587 或 465)。
基本上就这些,不复杂但容易忽略细节。


