我使用C# 的System.Net.Maill发送邮件:方法如下
/// <summary>
/// 发送邮件,经过测试gmail和sina邮箱可以发送成功
/// </summary>
/// <param name="sendMail">发送邮件的地址</param>
/// <param name="sendName">发信人显示的名称 </param>
/// <param name="acceptMail">邮件的接收者</param>
/// <param name="title">邮件的标题</param>
/// <param name="body">邮件的内容</param>
/// <param name="smtpHost">指定 smtp 服务器地址 </param>
/// <param name="userName">用于登录邮件服务器的用户名</param>
/// <param name="passWord">用于登录邮件服务器的密码</param>
/// <returns>发送是否成功</returns>
public static bool SendEmail(string sendMail, string sendName, string acceptMail, string title, string body, string smtpHost, string userName, string passWord)
{
try
{
Encoding encode = Encoding.UTF8;
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;//将smtp的出站方式设为 Network
//smtp.EnableSsl = true;//smtp服务器是否启用SSL加密
smtp.Host = smtpHost;//指定 smtp 服务器地址
smtp.Port = 25;//指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
//如果需要认证,则用此的方式
//如果你的SMTP服务器不需要身份认证,则使用下面的方式,不过,目前基本没有不需要认证的了
//smtp.UseDefaultCredentials = true;
smtp.Credentials = new NetworkCredential(userName, passWord);
MailMessage mail = new MailMessage();
mail.Priority = MailPriority.High; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
MailAddress ma = new MailAddress(sendMail, sendName, encode);
//收件方看到的邮件来源;
//第一个参数是发信人邮件地址
//第二参数是发信人显示的名称
//第三个参数是 第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码
//936是简体中文的codepage值
//注:上面的邮件来源,一定要和你登录邮箱的帐号一致,否则会认证失败
mail.From = ma;
//ReplyTo 表示对方回复邮件时默认的接收地址,即:你用一个邮箱发信,但却用另一个来收信
//上面后两个参数的意义, 同 From 的意义
mail.ReplyTo = ma;
//邮件的接收者,支持群发,多个地址之间用(半角逗号)分开
mail.To.Add(acceptMail);
mail.SubjectEncoding = encode;
mail.Subject = title;
mail.IsBodyHtml = true;//是否启用html代码
mail.BodyEncoding = encode;
mail.Body = body;
smtp.Send(mail);
return true;
}
catch (Exception ex)
{
mLog.Error(ex.Message);
return false;
}
}
出现如下问题。
无法从传输连接中读取数据: net_io_connectionclosed
遇到这个问题原因可能是:邮件服务器不问题,就是不支持一次发送过多邮件或有限制对你的发件地址。可以换一个163的邮箱地址或新浪的邮箱地址试试应该就可以了。