python 网易stmp发送邮件及问题列举

python 网易stmp发送邮件及问题列举

构造发送邮件

def format_email(subject, content):
    msg = MIMEText(("机器 %s :。" % machine_name) + content)
    msg['Subject'] = Header(subject, 'utf-8')
    # 554 from和to不能相同 subject要修改
    msg['From'] = ACC
    # 这里的recv是 [email protected],[email protected]这样的
    msg['To'] = recv

    return msg

建立连接并发送

def send_email(subject, content):
    msg = format_email(subject, content)

    smtp = smtplib.SMTP()
    for i in range(3):
        try:
            smtp.connect(HOST)
            smtp.login(ACC, PASSWD)
            break
        except:
            print_time("第三方邮箱连接失败,稍后重试。")
            time.sleep(5)

    for i in range(3):
        try:
            recv_lst = msg['To'].split(",")
            # 这里recv_lst 是["[email protected]", "[email protected]]这样的
            smtp.sendmail(ACC, recv_lst, msg.as_string())

            print_time("邮件发送成功")
            break
        except:
            print_time("发送邮件失败,稍后重试。")
            print_time(msg)
            traceback.print_exc()
            time.sleep(5)

    smtp.quit()

问题

错误码554

一个可能的原因是subject不对,尽量使用中文构造subject!!
而且这个会根据不同的ip来对相同的subject作出不同处理,在自己家网络可以发送,但是在别的地方却直接554。

你可能感兴趣的:(python 网易stmp发送邮件及问题列举)