邮件:事务失败。 服务器响应为:DT:SPM 163 smtp
几年前我做的一个项目,日发邮件最高峰时几十万。自以为对邮件发送方面已经有了一定认识,所以近期机缘巧合之下,又有项目需要发送邮件,不禁自信满满,暗自庆幸能不手到擒来乎?
不想老革命遇到新问题。我原先的邮件发送机制,是生成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没试过,估计也不会有问题)
邮件:事务失败。 服务器响应为:DT:SPM 163 smtp的更多相关文章
- 554 DT:SPM 163 smtp5,D9GowAD3RPYqSvxZjpMaAA--.4817S2 1509706293 坑爹的防垃圾邮件机制
代码如下 package ssmtest; import java.io.File;import java.io.UnsupportedEncodingException;import java.ut ...
- perl 用网易发邮件报错 554 DT:SPM 163 smtp14
查看相关链接,貌似被当成垃圾邮件了,发不出去 554 DT:SPM 163 smtp14,EsCowACHUegmKpdc3giRMQ--.29617S2 1553410599,please see ...
- 163邮箱问题:554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2
最近公司需要开发一个自定义邮箱功能,上网查询一下,利用163邮箱发送邮件. 由于163 的反垃圾机制,(坑爹机制.) 一般出现 554有在1)测试中用了test,测试,关键字在主题或者内容里面. 但是 ...
- smtplib.SMTPDataError: (554, b'DT:SPM 126 smtp
报错信息 smtplib.SMTPDataError: (554, b'DT:SPM 126 smtp7,DsmowAA3uguL7e1cyvkyFw--.22553S3 1559096715,ple ...
- smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp10,DsCowAA3nir1u6xZq42WDw--.22935S2 1504492533,please
# from email.mime.text import MIMEText # # msg = MIMEText('hello, send by Python...', 'plain', 'utf- ...
- smtplib.SMTPDataError: (554, b'DT:SPM 163……)
1.报错535: 未将POP3/SMTP服务开启.通过在163邮箱内 设置 获取授权码 打开,通过授权码可以进行第三方登录.此处的Password填写授权码. 2.报错554: 第一种情况:缺失发件 ...
- [转]smtplib.SMTPDataError: (554, b'DT:SPM的异常
本文转自:https://blog.csdn.net/mapeifan/article/details/82428493 python 发送邮件,出现如下异常 异常如下: smtplib.SMTPDa ...
- C# 发邮件 服务器响应为: 5.7.0 Must issue a STARTTLS command first
The SMTP server requires a secure connection or the client was not authenticated. The server respons ...
- System.net.mail.smtpException;服务器提交了协议冲突 服务器响应为:
最近发邮件遇到问题. 主机godaddy 端口 25,80 都可以用 stmp服务器地址:smtpout.secureserver.net 不支持ssl 我就吧 EnableSsl 设置为false了 ...
随机推荐
- (2) LVS负载均衡:VS_TUN和VS_DR的arp问题
1. ARP协议简介 ARP(Address Resolution Protocol)协议称为地址解析协议,用于将主机IP地址解析为主机的MAC地址,即IP-->MAC之间一一映射. RARP协 ...
- ssh和sshd服务
1.1 对称加密和非对称加密 对称加密:加密和解密使用一样的算法,只要解密时提供与加密时一致的密码就可以完成解密.例如QQ登录密码,银行卡密码,只要保证密码正确就可以. 非对称加密:通过公钥(publ ...
- You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, i
[ERROR] Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase or a goal ...
- MongoDB中WiredTiger的数据可用性设置
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB中WiredTiger的参数配置主要通过 wiredtiger_open (http://so ...
- 大数据学习——ip改成固定ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改BOOTPROTO为static 添加IPADDR=192.168.74.100 添加NETMASK=25 ...
- 大数据学习——Linux-SSH报错:Could not resolve hostname centos02: Temporary failure in name resolution
https://blog.csdn.net/mcb520wf/article/details/83303792 随笔异常 ssh: Could not resolve hostname centos0 ...
- 一、SQL基础知识点补充
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插 ...
- [codeforces724D]Dense Subsequence
[codeforces724D]Dense Subsequence 试题描述 You are given a string s, consisting of lowercase English let ...
- windows7 下安装使用memcached
Memcached 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网 http:/ ...
- Java实验--继承与多态
---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...