给单个人地址发就没问题,多人 list 就不行了。
这是报错内容
Error in functon : " send_text_email " ,
Error name is : " SMTPDataError " ,
Error type is : " <class 'smtplib.SMTPDataError'> " ,
Error Message is : " (554, 'DT:SPM 126 smtp2,DMmowECZeEbGLkNX_iNcAA--.205S2 1464020678,please see http://mail.163.com/help/help_spam_16.htm?ip=123.150.243.7&hostid=smtp2&time=1464020678') " ,
Error doc is : " The SMTP server didn't accept the data. " ,
msg 内容
From nobody Tue May 24 00:24:38 2016
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: =?utf-8?b?5rWL6K+V5py65Zmo5Lq6?= <[email protected]>
Subject: test
To: [email protected],[email protected]
aW5mbw==
主要代码
def send_text_email(self, title, message, message_type):
"""
发送文本邮件
没有返回值
函数内调用_format_address()
:param message_type:
:param message:
:param title:
"""
print 'send_text_email %s ' % title
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = self._format_address(u'%s<%s>' % (self.mailName, self.sender))
msg['Subject'] = Header(title)
while 1:
try:
smtp = smtplib.SMTP()
# smtp.set_debuglevel(1)
print '开始尝试连接邮箱'
smtp.connect(self.smtp_server, self.smtp_server_port)
print '成功连接邮箱'
print '开始尝试登陆邮箱'
smtp.login(self.username, self.password)
print '成功登陆邮箱'
if message_type == "securityInfo":
print '开始发送事件邮件'
msg['To'] = ','.join(self.receiver)
print 'msg', msg
smtp.sendmail(self.sender, self.receiver, msg.as_string())
print '成功发送事件邮件'
except smtplib.SMTPAuthenticationError:
print '认证失败,邮箱连接可能出问题了'
self.count += 1
if self.count < 3:
time.sleep(10)
continue
else:
print '更换邮箱后重试...'
self.Mail_choose = not self.Mail_choose
self.mail_init()
self.count = 0
continue
except Exception as e:
error_text = exception_format(get_current_function_name(), e)
print error_text
time.sleep(10)
continue
else:
smtp.quit()
self.count = 0
break
求各位指教
1
peter999 2016-05-24 00:59:06 +08:00
邮箱提供商都有反垃圾措施,免费的非常紧,即使是付费邮箱,每天的发送量也是有限制的,你需要的是这个
https://sendcloud.sohu.com |
2
flynaj 2016-05-24 01:03:39 +08:00 via Android
这个是邮件服务器的问题,
|
3
ericls 2016-05-24 01:22:05 +08:00 via iPhone
你需要 mailgun
|
4
qqmishi 2016-05-24 01:23:31 +08:00 via Android
看到 spam 了,可能是网易对发送频率的限制
|
5
SlipStupig 2016-05-24 02:22:24 +08:00
对抗 anti-spam filter 不用机器学习会累死你的
|
6
TimePPT 2016-05-24 10:22:21 +08:00
曾经跟人说过,发邮件是最简单的活也是最复杂的活,待过几家公司,真正懂的技术没几个。
|
7
leisurelylicht OP |
8
TimePPT 2016-05-24 14:10:12 +08:00
@leisurelylicht
ESP (邮件服务商)对个人及企业邮箱账号的每日发件量及发件频率有严格限制,是不允许进行大宗群发的。如果确实需要,还是用商业 EDM 发送服务吧。 这是反垃圾策略,也是服务成本考虑。 |
9
azh7138m 2016-05-24 14:47:33 +08:00
@SlipStupig 请问机器学习怎么对抗 anti-spam filter ?
|
10
SlipStupig 2016-05-24 17:05:14 +08:00
@azh7138m 这个可不是一两句话说的清楚的,关于垃圾邮件检测大概有几十个维度,有几万个向量,主要检测向量在,可以这么划分几个大类(这里只是简单说一下检测的大类,如果详细说明可以出本书了):
1.IP :主要是检测你的 IP 是否是在黑名单里面 2.域名:是否有 SPF 记录是否有 DKIM 记录,域名是否在 RBL 这类黑名单 3.发件源:这个发件源指的不是 IP 也不是域名,而是发件时间和域名信息存在的规律,结合你发件的速度和频率和周期能得出你是不是 spammer ,如果你没做过对抗,你很难听明白,简单的来说, ESP 厂商发现某一个段的 IP 在固定时间以差不多的速度,域名也差不多,这个就有可能是一个 spammer 了 4.数据:这个是 spammer 检测最大的一块,也是最复杂的一块。这个又可以分为几个小的类型 4.1 信头:检测信头部相似度,还有一个有没有伪造域名等等等 4.2 标题:邮件标题相似度,是否存在黑关键字,如果词库中存在存在就报黑,对于主动(AD)的分类为广告箱,例如(AD)恭喜您中奖了,中奖为黑名单由于有 AD 被归类为广告邮件 4.3 附件:存在附件相似度,是否有敏感内容等等 4.4 邮件收件人和发件人:这块主要是投递的线性概率是失败率,如果大量投递失败,则被 ban 掉 4.5 邮件正文这块:我实在不想讲,因为不讲细节都有一堆小标题 说完了检测方,我们再来说说对抗和 ML 的区别(目前国内没有一家 EDM 能真真靠技术对抗 ESP ,做机器学习过检测更加没有),首先人工定义一些基本策略去测试 ESP 向量阈值,然后拉去被分类的样本进行强化训练,发送之前靠逃逸组件去组合新策略出来,最大程度绕开检测(这个完全是体力活,毫无技术含量可言),最终目的就是根据拉取的样本推测出厂商更新,然后通知开发人员开发新的策略去更新或者做相关的策略组合调整(目前我技术不到家,片面认为全自动是做不到的) |