在 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)
- Gmail:
-
安全认证:
- 必须启用
EnableSsl = true - 部分邮箱(如 Gmail)需开启”允许不够安全的应用”或使用应用专用密码
- 必须启用
常见问题解决
-
认证失败:

- 检查用户名/密码是否正确
- Gmail 需开启两步验证并创建应用专用密码
- 检查是否启用了 “允许不够安全的应用”(不推荐)
-
超时错误:
smtp.Timeout = 30000; // 设置超时时间(毫秒)
-
配置在 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配置 }
ASP.NET Core 示例
对于 ASP.NET Core,推荐使用 MailKit 库(更安全高效):
- 安装 NuGet 包:
MailKit - 代码示例:
using MailKit.Net.Smtp; using MimeKit;
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 服务商调整参数。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/287606.html

