在 ASP.NET 中发送邮件通常使用
System.Net.Mail
命名空间下的类,以下是详细步骤和示例代码:
基础步骤
完整示例代码 (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}";}}}
关键配置说明
常见问题解决
ASP.NET Core 示例
对于 ASP.NET Core,推荐使用库(更安全高效):
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 服务商调整参数。
关于ASP.NET中电子邮件形式不符
异常详细信息: : 指定字符串与电子邮件地址所要求的形式不符。这么明显的提示:格式错误,建议你用正则表达式验证你的email地址这种错误要跟踪堆栈干嘛?debug下就行了,肯定是你传的参数(from,to)有问题!给你个表达式:验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”还有那最后一句话真的很欠鄙视!
我用本机的默认 SMTP 虚拟服务器发送邮件怎么发不出去?
既然发送成功,那么你可以看看是不是接收的问题,比如检查一下POP3之类的协议或邮局服务器。
帮忙修改:提交表单后自动发送邮件到指定邮箱的ASP代码,有JMAIL插件
call Jmail_Jaken(sendto,subject,无效内容,GB2312,text/html)Function Jmail_Jaken(mailTo,mailTopic,mailBody,mailCharset,mailContentType) Dim ConstFromNameCn,ConstFromNameEn,ConstFrom,ConstMailDomain,ConstMailServerUserName,ConstMailServerPasswordConstFromNameCn = 义乌淘房网发信人中文姓名(发中文邮件的时候使用),例如‘张三’ ConstFromNameEn = 发信人英文姓名(发英文邮件的时候使用),例如‘zhangsan’ ConstFrom = 126的邮箱全称发信人邮件地址,例如‘’ ConstMailDomain = 服务器地址,例如 ConstMailServerUserName = 邮箱用户名smtp服务器的信箱登陆名,例如‘zhangsan’。注意要与发信人邮件地址一致! ConstMailServerPassword = 邮箱密码smtp服务器的信箱登陆密码 ***************根据需要设置常量结束***************** -----------------------------以下内容无需改动------------------------------ On Error Resume Next Dim myJmail Set myJmail = () = True记录日志 = False邮件头不使用ISO-8859-1编码 = base64邮件编码设为base64 Priority,3添加邮件头,不要改动! MSMail-Priority,Normal添加邮件头,不要改动! Mailer,Microsoft Outlook Express 6.00.2800.1437添加邮件头,不要改动! MimeOLE,Produced By Microsoft MimeOLE V6.00.2800.1441添加邮件头,不要改动! = mailCharset = mailContentType If UCase(mailCharset) = GB2312 Then = ConstFromNameCn Else = ConstFromNameEn End If = ConstFrom = mailTopic HTML = = HTML mailTo = ConstMailDomain = ConstMailServerUserName = ConstMailServerPassword ConstMailDomain Set myJmail=nothing If Err Then Jmail_Jaken= Else Jmail_Jaken=OK End If On Error Goto 0 End Function














发表评论