如题,在asp.net网站中做了一个发送邮件的功能,
用163的邮箱作为发件人,我在自己机器测试,基本都能发送成功,
但是部署到服务器以后会经常出现类似下面这样的错误,一般提交3次会出现一次,有时候第一次提交就失败,反复多试就有一次会成功的。
事务失败。 服务器响应为: DT:SPM 163 smtp8,DMCowABnvOHWpWxYkkXGHA--
代码贴出来。。
https://q.cnblogs.com/q/64362/这里应该有你需要的答案
/// <summary> /// /// </summary> /// <param name="from">发件邮箱账号</param> /// <param name="pwd">发件邮箱账号密码</param> /// <param name="to">收件人邮箱</param> /// <param name="title">主题</param> /// <param name="content">内容</param> /// <param name="attachFileName">附件</param> /// <param name="pihao">我自己的一个用来重新命名附件的参数</param> /// <returns></returns> public static string SendEmail(string from, string pwd, string to, string title, string content, string attachFileName,string pihao) { string[] strs = from.Split('@'); string[] strs2 = strs[1].Split('.'); //发送 SmtpClient client = new SmtpClient(string.Format("smtp.{0}.com", strs2[0])); //设置邮件协议 client.UseDefaultCredentials = false;//这一句得写前面 client.EnableSsl = true; switch (strs2[0]) { case"163": case"126": case"qq": case"sina": client.Port = 25; break; case"Gmail": client.Port = 587; break; default: client.Port = 25; break; } // client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器 client.Credentials = new NetworkCredential(strs[0].ToString(), pwd); //通过用户名和密码 认证 string newFileName = ""; //因为之前附件名是guid命名的,所以怕因为这个会被当成垃圾邮件,所以重新命名附件 if (File.Exists(attachFileName)) { FileInfo fi = new FileInfo(attachFileName); string dire = Path.GetDirectoryName(attachFileName); string ex = fi.Extension; newFileName = Path.Combine(dire,"报告单"+pihao+ex); fi.CopyTo(newFileName,true); } MailMessage mmsg = new MailMessage(); try { mmsg = new MailMessage(new MailAddress(from), new MailAddress(to)); //发件人和收件人的邮箱地址 mmsg.Subject = title; //邮件主题 mmsg.SubjectEncoding = Encoding.UTF8; //主题编码 mmsg.Body =content; //邮件正文 mmsg.BodyEncoding = Encoding.UTF8; //正文编码 mmsg.IsBodyHtml = true; //设置为HTML格式 mmsg.Priority = MailPriority.High; //优先级 if (newFileName != "") { mmsg.Attachments.Add(new Attachment(newFileName));//增加附件 } client.Send(mmsg); return "邮件发送成功!OK!"; } catch (System.Net.Mail.SmtpException ex) { return "邮件发送失败,请稍后重试!Sending message to server failed,please try again latter"; // MessageBox.Show(ex.Message); } finally { mmsg.Dispose(); //需要释放mmsg后再delete File.Delete(newFileName); } }
很正常,邮件服务器对请求进行过滤了,太频繁的请求不让通过。有关键字的也一样。你可以在网上找到对应的错误解释。
请确保是用企业邮箱发送的
晕,我自己的邮箱是个人的都可以发送,没规定必须是企业邮箱吧
@菜鸟E419: 个人邮箱是可以发送,但是一直发送的话可能就发到对方的垃圾邮件里了
@双子rain: 这个我知道的,但是发送到垃圾邮件也是发送成功了。我的错误是有时候根本发布出去