日期:2014-05-17  浏览次数:20467 次

使用SMTP邮件传输协议发送邮件出错
做了一个发送邮件的界面,测试时出现“发送邮件失败”,而且需要非常长的事件才会提示错误,这是什么原因了,下面是代码,各路高手帮忙看看!!!



 MailMessage message = new MailMessage();
  message.From = new MailAddress("970815436@qq.com", "任浮生", Encoding.GetEncoding(936));
  //收件人邮箱地址可以是多个以实现群发
  message.To.Add(MessageTo);
  message.Subject = MessageSubject;
  message.Body = MessageBody;
  //是否为html格式
  message.IsBodyHtml = false;
  //发送邮件的优先等级 
  message.Priority = MailPriority.High;

  SmtpClient sc = new SmtpClient();
  //指定发送邮件的服务器地址或IP,根据不同的邮件服务商,写不同的服务器名
  //smtp.Sina.com
  sc.DeliveryMethod = SmtpDeliveryMethod.Network;
  sc.Host = "smtp.qq.com";
  //指定发送邮件端口 
  sc.Port = 425;  
  sc.UseDefaultCredentials = true;
  sc.EnableSsl = true;

  //指定登录服务器的用户名和密码 
  sc.Credentials = new System.Net.NetworkCredential("username", "passWord");
  try
  {
  //发送邮件 
  sc.Send(message);
  }
  catch (Exception e)
  {
  Response.Write(e.Message);
  return false;
  }
  return true;

------解决方案--------------------
using System.Web.Mail;
 
 
 
 /// <summary>
/// 发送邮件的方法
/// </summary>
/// <param name="toEmail">邮件接收地址</param>
/// <param name="fromEmail">邮件发送地址</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">邮件内容</param>
/// <param name="userName">发送邮件用户名</param>
/// <param name="password">发送邮件密码</param>
/// <param name="smtpHost">smtp服务器</param>
public void SendEmail(string toEmail, string fromEmail, string subject, string body, string userName, string password, string smtpHost)
{
//设置邮件发送对象
MailMessage mailObj = new MailMessage();
// 设置邮件的发送地址
mailObj.From = fromEmail;
//设置邮件的接收地址
mailObj.To = toEmail;
//设置邮件发送的主题
mailObj.Subject = subject;
//设置邮件发送的内容
mailObj.Body = body;
// html格式的邮件
mailObj.BodyFormat = MailFormat.Html;
// 设置为高级优先权
mailObj.Priority = System.Web.Mail.MailPriority.High;
//验证 
mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName); //用户名
mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password); //密码
//使用SmtpMail对象发送邮件
SmtpMail.SmtpServer = smtpHost;
SmtpMail.Send(mailObj);
}

------解决方案--------------------
貌似这个在本地是测试不通的,LZ将这段代码放到服务器上去跑跑看