• python发送邮件554DT:SPM已解决


      说明:本例使用163邮箱

    一、报错信息

      使用SMTP发送邮件遇到以下报错:

      554, b'DT:SPM 163 smtp10,DsCowACXeOtmjRRdsY8aCw--.21947S2 1561628007,please see http://mail.163.com/help/help_spam_16.htm?ip=36.110.94.251&hostid=smtp10&time=1561628007'

    二、排查原因

      1.检查163邮箱是否设置授权码,授权码对不对。不对会报错:535, b'Error: authentication failed'

      2.检查代码邮件格式规范

        下面贴出菜鸟教程部分代码使用header。看已发送邮件的确是显示了发件人别名(显示代发),收件人看到的发件人也是自己起的别名。如下图:

    # -*- coding: utf-8 -*-
    # Nola
    
    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    import time
    
    mail_server = "smtp.163.com"
    mail_port = 25
    sender = "xxxxx@163.com"
    sender_password = "xxxxxx"  # 授权码
    receivers = "wewewwe@163.com"
    
    
    message = MIMEText('Python邮件发送测试...', 'plain', 'utf-8')
    # message['From'] = sender
    # message['To'] = receivers
    message['From'] = Header("菜鸟教程", 'utf-8')
    message['To'] = Header("测试", 'utf-8')
    
    send_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    subject = '邮件测试' + send_time
    message['Subject'] = subject
    
    
    try:
        smtp_obj = smtplib.SMTP()
        smtp_obj.connect(mail_server, mail_port)
        smtp_obj.login(sender, sender_password)
        smtp_obj.sendmail(sender, [receivers], message.as_string())
        print('success!')
    except smtplib.SMTPException as e:
        print('failure!')
        print(e)

      重点是:收到几封邮件后,收不到了,换收件人也收不到,猜测是163禁发了。点上图中帮助可以看到下图,所以善意的伪装也会产生误会。

    三、解决方法

      From和To使用发件人和收件人真实邮箱地址,发送即可成功。

      

    # -*- coding: utf-8 -*-
    # Nola
    
    import smtplib
    from email.mime.text import MIMEText
    import time
    
    mail_server = "smtp.163.com"
    mail_port = 25
    sender = "xxxxx@163.com"
    sender_password = "xxxxxx"  # 授权码
    receivers = "wewewwe@163.com"
    
    
    message = MIMEText('Python邮件发送测试...', 'plain', 'utf-8')
    message['From'] = sender
    message['To'] = receivers
    
    send_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    subject = '邮件测试' + send_time
    message['Subject'] = subject
    
    
    try:
        smtp_obj = smtplib.SMTP()
        smtp_obj.connect(mail_server, mail_port)
        smtp_obj.login(sender, sender_password)
        smtp_obj.sendmail(sender, [receivers], message.as_string())
        print('success!')
    except smtplib.SMTPException as e:
        print('failure!')
        print(e)

      

      

  • 相关阅读:
    CAP 与数据一致性
    C++的构造函数为何不能为虚函数
    构造函数和析构函数中可以调用调用虚函数吗
    HTTP状态码
    C++ 单例模式实现
    【转】十大经典排序算法
    C++ short/int/long/long long 等数据类型大小
    块/文件/对象三种存储的优缺点
    罗振宇《时间的朋友》2019-2020
    Google Hacking
  • 原文地址:https://www.cnblogs.com/NolaLi/p/11098670.html
Copyright © 2020-2023  润新知