Home  >  Q&A  >  body text

python3 使用smtplib发送邮件错误554

python3使用smtplib和MIME发送邮件失败

代码:

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

def send_email(SMTP_host, from_addr, password, to_addrs, subject, content):
    email_client = SMTP(SMTP_host)
    email_client.login(from_addr, password)
    # create msg
    msg = MIMEText(content,'plain','utf-8')
    msg['Subject'] = Header(subject, 'utf-8')#subject
    msg['From'] = 'main<xxxxx@163.com>'
    msg['To'] = "xxxxx@126.com"
    email_client.sendmail(from_addr, to_addrs, msg.as_string())

    email_client.quit()

if __name__ == "__main__":
    send_email("smtp.163.com","xxxxx@163.com","password","xxxxx@126.com","test","hellow")
    

运行错误:

Traceback (most recent call last):
...
  File "D:/bioinformatics/python脚本/mai.py", line 14, in send_email
    email_client.sendmail(from_addr, to_addrs, msg.as_string())
  File "D:\软件\python\lib\smtplib.py", line 799, in sendmail
    raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp8,DMCowACX58anaFJX9+uwAA--.20172S2 1465018537,please see http://mail.163.com/help/help_spam_16.htm?ip=219.143.13.117&hostid=smtp8&time=1465018537')

在网上找了很多方法,把防火墙也关了,修改了发件人收件人名称,但还是没有效果,真的不知道是什么原因。。

大家讲道理大家讲道理2764 days ago910

reply all(4)I'll reply

  • 大家讲道理

    大家讲道理2017-04-17 17:53:33

    Finally I found a solution:
    An error will occur when the email subject is ‘test’, just change it to another word. . I don’t know what the weird reason is

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:53:33

    Isn’t the Error report very clear:
    The link from the error: http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

    554 DT: The content of the email sent by SPM contains unauthorized information or is identified as spam by the system. Please check if any user is sending viruses or spam;

    What you need is to check the content of what you posted.

    reply
    0
  • ringa_lee

    ringa_lee2017-04-17 17:53:33

    1) Check the trash can to make sure the email is not thrown into the trash can
    2) From and To must be consistent with the content, do not fill in inconsistent fields, otherwise it will be filtered by the mail server.
    If you test the code below, you can use 163 mailbox to send emails to QQ mailbox.

    def send_email(SMTP_host, from_account, from_passwd, to_account, subject, content):
        email_client = SMTP(SMTP_host)
        email_client.login(from_account, from_passwd)
        # create msg
        msg = MIMEText(content, 'plain', 'utf-8')
        msg['Subject'] = Header(subject, 'utf-8')  # subject
        msg['From'] = from_account
        msg['To'] = to_account
        email_client.sendmail(from_account, to_account, msg.as_string())
    
        email_client.quit()
        
        
        

    reply
    0
  • PHPz

    PHPz2017-04-17 17:53:33

    This is indeed the case, the sender and receiver must be 163 servers to successfully send. Otherwise, an error will be reported!

    reply
    0
  • Cancelreply