ASP.NET发邮件遇到配置难题?C代码示例与SMTP设置步骤详解
- 技术教程
- 2026-02-08
- 4116
在 ASP.NET 中发送邮件通常使用 System.Net.Mail 命名空间下的类,以下是详细步骤和示例代码:
基础步骤
- 引用命名空间:using System.Net; 和 using System.Net.Mail;
- 配置 SMTP 信息:需提供 SMTP 服务器地址、端口、凭据等
- 创建邮件对象:MailMessage 设置发件人、收件人、主题、正文等
- 发送邮件:通过 SmtpClient 发送
完整示例代码 (ASP.NET Web Forms)
using System; using System.Net; using System.Net.Mail; using System.Web.UI; public partial class SendEmail : Page { protected void btnSend_Click(object sender, EventArgs e) { try { // 1. 设置发件人信息 MailAddress fromAddress = new MailAddress("your_email@gmail.com", "发件人名称"); // 2. 设置收件人 MailAddress toAddress = new MailAddress("recipient@example.com", "收件人名称"); // 3. 创建邮件对象 using (MailMessage mail = new MailMessage(fromAddress, toAddress)) { mail.Subject = "ASP.NET 邮件测试"; mail.Body = "这是一封来自 ASP.NET 的测试邮件!"; mail.IsBodyHtml = true; // 是否使用HTML格式 // 添加附件(可选) // mail.Attachments.Add(new Attachment("C:\path\file.txt")); // 4. 配置SMTP客户端 using (SmtpClient smtp = new SmtpClient()) { smtp.Host = "smtp.gmail.com"; // SMTP服务器地址 smtp.Port = 587; // Gmail使用587端口 smtp.EnableSsl = true; // 启用SSL加密 smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; // 邮箱凭据(推荐使用应用专用密码) smtp.Credentials = new NetworkCredential( "your_email@gmail.com", "your_password_or_app_password" ); // 5. 发送邮件 smtp.Send(mail); lblStatus.Text = "邮件发送成功!"; } } } catch (Exception ex) { lblStatus.Text = $"发送失败: {ex.Message}"; } } }
关键配置说明
-
SMTP 服务器设置:
- Gmail:smtp.gmail.com (端口 587)
- Outlook/Hotmail:smtp.office365.com (端口 587)
- QQ 邮箱:smtp.qq.com (端口 465 或 587)
-
安全认证:
- 必须启用 EnableSsl = true
- 部分邮箱(如 Gmail)需开启”允许不够安全的应用”或使用应用专用密码
常见问题解决
-
认证失败:
- 检查用户名/密码是否正确
- Gmail 需开启两步验证并创建应用专用密码
- 检查是否启用了 “允许不够安全的应用”(不推荐)
-
超时错误:
-
配置在 Web.config 中:
<system.net> <mailSettings> <smtp from="your_email@gmail.com"> <network host="smtp.gmail.com" port="587" userName="your_email@gmail.com" password="your_password" enableSsl="true"/> </smtp> </mailSettings> </system.net>代码中只需:
using (SmtpClient smtp = new SmtpClient()) { smtp.Send(mail); // 自动读取Web.config配置 }
- 安装 NuGet 包:MailKit
- 代码示例: using MailKit.Net.Smtp; using MimeKit;
ASP.NET Core 示例
对于 ASP.NET Core,推荐使用 MailKit 库(更安全高效):
public async Task SendEmailAsync()
{
var message = new MimeMessage();
message.From.Add(new MailboxAddress(“发件人”, “sender@example.com”));
message.To.Add(new MailboxAddress(“收件人”, “recipient@example.com”));
message.Subject = “ASP.NET Core 邮件”;
message.Body = new TextPart(“html”) { Text = “HTML内容” };
using (var client = new SmtpClient()) { await client.ConnectAsync("smtp.example.com", 587, false); await client.AuthenticateAsync("username", "password"); await client.SendAsync(message); await client.DisconnectAsync(true); } --- ### 注意事项 1. **避免硬编码凭据**:将敏感信息存储在 `appsettings.json` 或环境变量中 2. **异常处理**:务必包裹 `try-catch` 处理网络异常 3. **垃圾邮件**:确保遵守反垃圾邮件法规(如添加退订链接) 4. **异步发送**:对于长时间操作,使用异步方法 `SendMailAsync` 通过以上步骤,您可以在 ASP.NET 中实现可靠的邮件发送功能,实际使用时请根据您的 SMTP 服务商调整参数。


