几年前我做的一个项目,日发邮件最高峰时几十万。自以为对邮件发送方面已经有了一定认识,所以近期机缘巧合之下,又有项目需要发送邮件,不禁自信满满,暗自庆幸能不手到擒来乎?

不想老革命遇到新问题。我原先的邮件发送机制,是生成eml文件,然后扔到windows自带的smtp服务器的pickup目录下,系统即自动发送(见拙作:邮件发送一点心得)。

但今时今日,这些好像都是老皇历了。IIS7默认并没有SMTP,如果操作系统是server,还可以通过添加功能加上去,但WIN7就不行了。偏偏,我们的系统就部署在WIN7下。

我第一个应对之道是看WIN7能不能装那个自带的SMTP,结果是不行,死活没找到。

第二个办法是装个第三方的SMTP,找来找去,找到一个叫做什么FREE SMTP的,装上去以后,打开看,好像忒简单了点。根本没有啥PICK目录的,应该是只能通过代码,搞什么几次握手之类的方法来进行调用。我很烦这个东西。

最后,决定还是直接使用smtp.163.com。网上例子比比皆是。

public interface IEmail
{bool Send(EmailParam param);string Mess { get; }
}
public class EmailParam
{public string From { get; set; }public string To { get; set; }//接收人;多个邮箱用分号隔开public string CC { get; set; }//抄送;多个邮箱用分号隔开public string Subject { get; set; }//标题public string Body { get; set; }//邮件正文
}public class Sender : IEmail
{SmtpClient client;public Sender(){// <add key="eml_host" value="smtp.163.com"/>// <add key="eml_account" value="chendaqu"/>// <add key="eml_pwd" value="1234abcd"/>string host = ConfigurationManager.AppSettings["eml_host"];string account = ConfigurationManager.AppSettings["eml_account"];string pwd = ConfigurationManager.AppSettings["eml_pwd"];client = new SmtpClient();client.Host = host;client.UseDefaultCredentials = false;client.DeliveryMethod = SmtpDeliveryMethod.Network;client.Credentials = new System.Net.NetworkCredential(account,pwd);client.Port = 25;}public string Mess { get; set; }public bool Send(EmailParam param){MailMessage mail = new MailMessage();mail.From = new MailAddress(param.From);getCollection(mail.To,param.To);getCollection(mail.CC, param.CC);mail.Subject = param.Subject;mail.Body = param.Body;mail.SubjectEncoding = Encoding.UTF8;mail.BodyEncoding = Encoding.UTF8;mail.Priority = MailPriority.Normal;mail.IsBodyHtml = true;mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;try{client.Send(mail);}catch(Exception ex){Mess = ex.Message;return false;}return true;}MailAddressCollection getCollection(MailAddressCollection collection,string arstring){if (!String.IsNullOrEmpty(arstring)){string[] ar = arstring.Split(';');foreach (string item in ar){if (String.IsNullOrEmpty(item)) continue;collection.Add(item);}}return collection;}
}

使用单元测试进行调用:

[TestMethod()]
public void SendTest()
{IEmail sender = new Sender();bool ok = sender.Send(new EmailParam(){Subject = "邮件测试7",Body = "Hello World!",From = "chendaqu@163.com",To = "178879771@qq.com;461198190@qq.com",});Assert.AreEqual(true, ok);
}

结果刚开始非常顺利,都能收到邮件;但该单元测试运行了几次以后,就发送失败了。提示:

错误:邮件:事务失败。 服务器响应为:DT:SPM 163 smtp11,D8CowACXNqusR1pYQe3vGA--.16469S2 1482311598,please see http://mail.163.com/help/help_spam_16.htm?ip=219.136.75.223&hostid=smtp11&time=1482311598

开始时以为是因为163邮箱的反垃圾邮件机制,猛查资料,结果一无所获。焦虑攻心之下,我第二天居然感冒了。后来才知道是QQ邮箱的发垃圾邮件机制所致。同一个发送请求中,有一个地址失败,其他的都失败了,所以称为“事务”?

后来就是莫名其妙地好了,可能是邮件内容有所变化,QQ又认为它不是垃圾了。靠。

注:
我这个163邮箱,开启了客户端授权,未清楚对应对反垃圾机制是否有用,好像不开启这个客户端授权也能发送。开启了这个客户端授权后,代码中的密码要使用这个客户端授权密码,而不是登录邮箱的密码。

==================================
以上就是垃圾。这个问题等于没解决。163的SMTP一言不合就将你的邮件当成垃圾邮件,直到第二天才解封。但是很奇怪,采用foxmail作为客户端来发送同样的邮件,却没有问题,说到底还是代码的问题?(outlook没试过,估计也不会有问题)

转载于:https://www.cnblogs.com/leftfist/p/6808673.html

邮件:事务失败。 服务器响应为:DT:SPM 163 smtp相关推荐

  1. 邮件 事务失败 服务器响应为 DT SPM 163 smtp

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 几年前我 ...

  2. 搭建邮件服务器 提示554 DT:SPM 163

    javamail 搭建邮件服务器的时候,用163就是一个坑. 在我搭建完邮件服务器,并且做好本地测试的时候.我开始发送http请求,准备开始发邮件.参数设置都没有问题.但是就是报错 报554 DT : ...

  3. perl 用网易发邮件报错 554 DT:SPM 163 smtp14

    查看相关链接,貌似被当成垃圾邮件了,发不出去 554 DT:SPM 163 smtp14,EsCowACHUegmKpdc3giRMQ--.29617S2 1553410599,please see ...

  4. 【华硕 Armoury crate 中 GameVisual 更新色彩配置文件 GameVisual下载失败服务器响应超时问题解决】

    华硕 Armoury crate 中 GameVisual 更新色彩配置文件 GameVisual下载失败 服务器响应超时 问题解决 问题描述 解决方法 获取显卡(连接屏幕的那张显卡)硬件ID 获取监 ...

  5. javaMail SMTPSendFailedException: 554 DT:SPM 163 smtp4

    com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp4,DtGowAC39BkEKIxX2VoCAA–.130S2 146880 ...

  6. java mail 554_javaMail 163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11

    163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11 554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件.请检查是否有用户发送病毒或者垃圾邮件: ...

  7. 163邮箱问题:554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2

    最近公司需要开发一个自定义邮箱功能,上网查询一下,利用163邮箱发送邮件. 由于163 的反垃圾机制,(坑爹机制.) 一般出现 554有在1)测试中用了test,测试,关键字在主题或者内容里面. 但是 ...

  8. 你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC

    最近在学习Python于是自己写了个小脚本测试使用smtp发送邮件,一切ok后出现如下错误: smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp1,GdxpCg ...

  9. 天天生鲜 smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp13

    问题描述 Python3.5 + Django2.2 天天生鲜项目在[3-07_django内置函数发送激活邮件]一节中填写完注册信息后提交时出现如下报错: Internal Server Error ...

最新文章

  1. java环境配置好了还不行,java配置环境java不行
  2. Toolbar中Overflow Menu不显示问题
  3. iOS-- pod常用命令
  4. 用计算机改手机电量,手机电池使用时间增加
  5. STM32开发 -- UART应用层通信协议分析
  6. 虚拟主机评测网已经崭露头角
  7. html中免费的四级联动,利用JS实现省市区街道四级联动插件
  8. 雷林鹏分享:C# 运算符
  9. Axure RP chrome插件显示已损坏或者无法安装的解决方法
  10. redis 亿级查询速度_吊打面试官系列:Redis 性能优化的 13 条军规大全
  11. Kubernetes 学习总结(23)—— 2022 年 Kubernetes 的 5 个趋势
  12. vs2013创建c++控制台应用程序
  13. SSO单点登录之同域登录的实现
  14. 无标题自用临时文档.C# | python交互
  15. PostFix postqueue 指令
  16. 外部库依赖以及 编译
  17. mysql 与紫金桥_组态软件的国内品牌
  18. vim 设置配色方案
  19. 一文弄懂Spring Cloud的5大核心组件详解:Eureka+Hystrix+Zuul+Ribbon
  20. 投影仪和电视哪个更好?一文科普详细比较

热门文章

  1. java接口示例_【基础篇】java-接口及其示例
  2. wpf 修改label值_WPF 获取动态添加控件的值
  3. 将Web项目部署到华为云服务器的Linux的Tomcat中
  4. 使用Kotlin写脚本
  5. 使用python操作postgresql 查询
  6. 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)
  7. java exe 返回值_java调用exe返回值
  8. python写一个服务_写一个Python的windows服务
  9. ab压力测试_CentOS安装压力测试工具ApacheBench(ab)
  10. 面试题整理3 大数的表示及加减法问题