python smtplib 发送邮件报错:(550, b‘header syntax‘)

尝试使用outlook服务器发送邮件时,出现报错。

原始代码:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os.path


def send_email(hostname, file_name_list, email_sender, email_recipients, email_subject, email_body):
    server = smtplib.SMTP(hostname)
    server.ehlo()
    server.starttls()
    main_msg = MIMEMultipart("mixed")
    content_html = email_body
    main_msg.attach(MIMEText(content_html, 'html', "utf-8"))
    # 构造MIMEBase对象做为文件附件内容并附加到根容器
    for file_name in file_name_list:
        # 读入文件内容并格式化
        attchmt = MIMEApplication(open(file_name, 'rb').read(), 'utf-8')
        # 设置附件头
        basename = os.path.basename(file_name)
        attchmt.add_header('Content-Disposition', 'attachment', filename=basename, encoding='utf-8')
        main_msg.attach(attchmt)
    # 设置根容器属性
    main_msg['From'] = email_sender
    main_msg['To'] = email_recipients # "xxxx@outlook.com;xxx@qq.com"
    main_msg['Subject'] = email_subject
    # 得到格式化后的完整文本
    fulltext = main_msg.as_string()
    # 用smtp发送邮件
    try:
        server.sendmail(email_sender, email_recipients.split(';'), fulltext)
    finally:
        server.quit()
    return "邮件发送成功!"

运行后报错:

 看报错应该是Msg中header的句法错误,后在网上搜索outlook 发送给多个收件人时msg中的收件人之间必须使用逗号 "," 隔开。

修改后代码:

# 设置根容器属性
main_msg['From'] = email_sender
main_msg['To'] = ','.join(email_recipients.split(';')) # "xxxx@outlook.com,xxx@qq.com"
main_msg['Subject'] = email_subject

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值