消息关闭
    暂无新消息!
各位大神,
    小弟写了一个python发邮件的简单代码,但是当发给自己的时候测试时OK的,但是如果发向其他邮箱就会有问题,麻烦大神看看是哪里的问题,谢谢!

!C:\Python27
# coding:utf-8

import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time

sender = "diweiguang88@163.com"

receivers = "wangwei@163.com"
while (1):
    time.sleep(2)
    print '11111'
    message = MIMEText('Pure Text Here!','plain','utf-8')
    print '2222'
    message['From'] = Header('from Mark','utf-8')
    print '3333'
    message['To'] = Header('test titile','utf-8')
    print '555'
    subject = 'this is titile of mail'
    message['Subject'] = Header(subject,'utf-8')
    print '6666'
    try:
        smtpObj = smtplib.SMTP()
        print '7777'
        smtpObj.connect('smtp.163.com',25)
        print '8888'
        smtpObj.login(sender,'diweiguang199157')
        print '9999'
        smtpObj.sendmail(sender,receivers,message.as_string())
        print '101010'
        smtpObj.quit()
        print 'OK'
    except smtplib.SMTPException,e:
        print  e.message

3个回答

︿ 2
11111
2222
3333
555
6666
7777
8888

Traceback (most recent call last):
  File "D:/sharefolder/python_temp/1.py", line 27, in <module>
    smtpObj.sendmail(sender,receivers,message.as_string())
  File "C:\Python27\lib\smtplib.py", line 751, in sendmail
    raise SMTPDataError(code, resp)
SMTPDataError: (554, 'DT:SPM 163 smtp10,DsCowABHAJ4fbZpZnM1tAw--.20029S2 1503292703,please see http://mail.163.com/help/help_spam_16.htm?ip=106.37.223.54&hostid=smtp10&time=1503292703')

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

都说了,你的账号可能由于发送相同内容次数太多已经被邮件服务器标识成垃圾邮件了。
你换个账号,改一下标题和内容再试吧,不然白费劲儿。
︿ 2
没有仔细看你的代码,

你那个while (1):会 不停发信的,估计你的账号已经被列入黑名单了

不信你把这下面这段代码,复制回去运行一下就能看到提示信息了。


# -*- coding:utf-8 -*-  
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time
 
sender = u"diweiguang88@163.com"
 
receivers = [u"wangwei@163.com"]

print '11111'
message = MIMEText(u'Pure Text Here!','plain','utf-8')
print '2222'
message['From'] = Header(u'diweiguang88@163.com','utf-8')
print '3333'
message['To'] = Header(u'wangwei@163.com','utf-8')
print '555'
subject = u'this is titile of mail'
message['Subject'] = Header(subject,'utf-8')
print '6666'
smtpObj = smtplib.SMTP()
print '7777'
smtpObj.connect(u'smtp.163.com',25)
print '8888'
smtpObj.login(sender,u'diweiguang199157')
smtpObj.sendmail(sender,receivers,message.as_string())
smtpObj.quit()



Traceback (most recent call last):
  File "D:\temp\7.py", line 28, in <module>
    smtpObj.sendmail(sender,receivers,message.as_string())
  File "C:\Python27\lib\smtplib.py", line 751, in sendmail
    raise SMTPDataError(code, resp)
SMTPDataError: (554, 'DT:SPM 163 smtp2,DNGowAAXVjbKn5lZg26mAA--.26737S2 1503240138,please see http://mail.163.com/help/help_spam_16.htm?ip=123.121.56.215&hostid=smtp2&time=1503240138')

  •554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;
  •554 DT:SUM 信封发件人和信头发件人不匹配;
  •554 IP is rejected, smtp auth error limit exceed 该IP验证失败次数过多,被临时禁止连接。请检查验证信息设置;
  •554 HL:IHU 发信IP因发送垃圾邮件或存在异常的连接行为,被暂时挂起。请检测发信IP在历史上的发信情况和发信程序是否存在异常;
  •554 HL:IPB 该IP不在网易允许的发送地址列表里;
  •554 MI:STC 发件人当天内累计邮件数量超过限制,当天不再接受该发件人的投信。请降低发信频率;
  •554 MI:SPB 此用户不在网易允许的发信用户列表里;
  •554 IP in blacklist 该IP不在网易允许的发送地址列表里。
︿ 2
问题应该出在你的邮件头中的 “From”和“To” 你那个两个字段都是给填了一个随意字符串,正规邮件服务器通常都会拒收的。 
改成真正的邮件地址就可以了。最好不要伪造地址,要和实际的sender地址一致,不然有些严格的邮件服务器也会认为是垃圾或恶意邮件而拒收。

    message['From'] = Header('from Mark','utf-8')改
message['From'] = Header(sender, 'utf-8') 
如果要自定义显示发件人名字按下面的格式
message['From'] = Header(u'from Mark<{}>'.format(sender), 'utf-8')
   
 message['To'] = Header('test titile','utf-8') 改成
 message['To'] = Header(receivers,'utf-8')