使用smtpClient发送邮件时,经常跑出难以明白的错误。其实主要都和我们申请的免费邮箱有关系。有些邮箱不支持,比如163的以前申请的帐号可以用,新注册的帐号是发不了的。
/// <summary>
/// 功能:发送邮件,返回字符串:“发送成功”否则返回错误代码。
/// 创建:2007-08-23
/// </summary>
/// <param name="MailTo">MailTo为收信人地址</param>
/// <param name="Subject">Subject为标题</param>
/// <param name="Body">Body为信件内容</param>
/// <param name="BodyFormat">BodyFormat为信件内容格式:0为Text,1为Html</param>
/// <param name="Priority">Priority为优先级:0为低,1为中,2为高</param>
/// <param name="Attachments">Attachment为附件,为null则不发送</param>
public static string SendMail(System.Collections.ArrayList MailTo, string Subject, string Body, int BodyFormat, int Priority, string Attachments)
{
string result;

SmtpClient mail = new SmtpClient();
//发送方式
mail.DeliveryMethod = SmtpDeliveryMethod.Network;
//smtp服务器
mail.Host = "smtp.sina.com";
//用户名凭证
mail.Credentials = new System.Net.NetworkCredential("mail_user_name", "mail_user_password");
//邮件信息
MailMessage message = new MailMessage();
//发件人
message.From = new MailAddress("mail_user_name@sina.com");
//收件人
foreach (object item in MailTo)
{
message.To.Add(item.ToString());
}
//主题
message.Subject = Subject;
//内容
message.Body = Body;
//正文编码
message.BodyEncoding = System.Text.Encoding.UTF8;
//设置为HTML格式
message.IsBodyHtml = true;
//优先级
message.Priority = MailPriority.High;

try
{
mail.Send(message);
result = "发送成功";
return result;
}
catch (Exception e)
{
result = e.ToString();
}
return result;
}
不同的邮箱,要改的部分主要是“上面代码中高亮的部分”,有些邮箱地址是要加后缀“@xxx.com”,而有些邮箱只要用户名就好了 .
附带以前2003版的:

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="Sender">发件人邮箱地址</param>
/// <param name="Receiver">收件人邮箱地址</param>
/// <param name="Title">邮件标题</param>
/// <param name="Content">邮件内容</param>
/// <param name="SmtpServer">邮箱服务器名称</param>
/// <param name="Validate">服务器是否需要验证</param>
/// <param name="UserName">验证用户名</param>
/// <param name="Password">验证密码</param>
/// <returns>结果</returns>
public string SendMail(string from,string to,string title,string body,string enclosure,
string smtpServer,bool validate,string userName,string password)
{
MailMessage mail = new MailMessage();//实例化MailMessage
mail.From = from; //邮件发件人
mail.To = to;//邮件收件人
mail.Subject = title;//邮件标题
mail.Body = body; //邮件内容
mail.BodyFormat = MailFormat.Html; //邮件文本格式
mail.Priority = MailPriority.Normal;//邮件发送级别
if(enclosure != "")
{
//添加附件
MailAttachment ma = new MailAttachment(enclosure);
mail.Attachments.Add(ma);
}
//邮件服务器是否需要验证
if(validate)
{
if(userName != "" && password != "")
{
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);
}
else
{
return "缺少验证用户名和密码";
}
}
try
{
SmtpMail.SmtpServer = smtpServer;//设置邮件服务器
//发送邮件
SmtpMail.Send(mail);
return "邮件发送成功!";
}
catch
{
return "邮件发送失败!";
}
}





















































不同的邮箱,要改的部分主要是“上面代码中高亮的部分”,有些邮箱地址是要加后缀“@xxx.com”,而有些邮箱只要用户名就好了 .
附带以前2003版的:
























































分类:
020~asp.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)