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

关于ASP.NET发送邮箱的代码问题
public void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody)
  {
  System.Net.Mail.SmtpClient client = new SmtpClient(strSmtpServer);
  client.UseDefaultCredentials = true;
  client.Credentials = new System.Net.NetworkCredential("534700071", strFromPass);
  client.DeliveryMethod = SmtpDeliveryMethod.Network;
  System.Net.Mail.MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
  message.BodyEncoding = System.Text.Encoding.UTF8;
  message.IsBodyHtml = true;
  client.Send(message);
  }
  //第一个参数是邮箱服务器
  //第二个参数发件人的帐号
  //第三个参数发件人密码
  //第四个参数收件人帐号
  //第五个参数主题
  //第六个参数内容.
protected void Button1_Click1(object sender, EventArgs e)
  {
 SendSMTPEMail("smtp.qq.com", "534700071@qq.com", "13731327378+", "380107165@qq.com", "123", "用asp.net发送邮件,用qq的smtp.qq.com服务器,测试成功");
  }


从网上找到的一段代码,执行有错误!
参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Net.Mail.SmtpException: 参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user

源错误: 


行 28: message.BodyEncoding = System.Text.Encoding.UTF8;
行 29: message.IsBodyHtml = true;
行 30: client.Send(message);
行 31: }
行 32: //第一个参数是邮箱服务器
 
求高手!!!!如果有更好,执行效率更高的代码,求指导~~~
万分感谢!

------解决方案--------------------
不能加这句 client.UseDefaultCredentials = true;
如果你使用公司的服务器向外发送邮件,则代码要加上这句,因为这句代码的意思是使用内部的验证证书。
但是如果你使用外网公司如QQ,网易的SMTP服务器,则不能要这句代码。

以下是我为我公司系统写的部分代码,供你参考。
private void SendMail()
{
//Set SmtpClient information
string host = "10.9.2.18";//公司發送,而非網易的126
int port = 25;
SmtpClient sClient = new SmtpClient(host, port);
//以下是當使用外網的smtp服務器時用到的代碼,如網易,騰訊等。
//sClient.Credentials = new System.Net.NetworkCredential("126郵箱名稱", "密碼");
sClient.DeliveryMethod = SmtpDeliveryMethod.Network;
sClient.UseDefaultCredentials = true;//使用默認服務器驗證,使用公司郵箱服務器發到外網。使用網絡供應商郵箱請使用帳號和密碼驗證方式


//Set MailMessage information and From Address.
MailMessage mmsg = new MailMessage();
mmsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
mmsg.From = new MailAddress("BERP_System@bti.com.cn", "aaaaa");
mmsg.Priority = MailPriority.High;
//start send mail content 
mmsg.SubjectEncoding = Encoding.UTF8;
mmsg.Subject = "aaaaa";
//mmsg.Attachments.Add(new Attachment(filepath));
string s_email = "abc@bti.com.cn";//for last test.
//收件人信息
//對郵件地址進行處理 (write by wei_hang 2011/05/06)
if (s_email.Contains(";"))//如果郵件地址包含分號
{
string[] toAdrs = s_email.Split(";".ToCharArray());
foreach (string toAdr in toAdrs)
{
mmsg.To.Add(toAdr);
}
}
else
{
mmsg.To.Add(s_email);
}