使用python发送带附件的邮件给多个收件人

1.导入第三方模块,发送电子邮件要用到的模块主要有smtplib,email两个。

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

2.添加发件人及收件人的信息,其中password不是发件人邮箱的登录密码,而是邮箱的授权码,需要在电子邮箱开启这个功能才可以使用第三方客户端登录电子邮箱,一般在邮箱的设置里,开启后可获得授权码。

username = '[email protected]'
password = 'xxxxxxx'
sender = username
#receivers接下来还要split(',')才可以发送到多个收件人
receivers = '[email protected],[email protected]'

3.设置邮件信息

# 如名字所示: Multipart就是多个部分
msg = MIMEMultipart()
msg['Subject'] = '这是主题'
msg['From'] = sender
msg['To'] = receivers
 
# 下面是文字部分,也就是纯文本,如果正文内容较多可保存在一个文本文件里,然后再读取到一个变量添加到正文内容
puretext = MIMEText('这是正文内容')
msg.attach(puretext)

# 下面是附件部分 ,这里xlsx类型的附件
xlsxpart = MIMEApplication(open('新建 Microsoft Excel 工作表.xlsx', 'rb').read())
xlsxpart.add_header('Content-Disposition', 'attachment', filename='测试.xlsx')
msg.attach(xlsxpart)

4.登录并发送邮件

try:
    client = smtplib.SMTP()
    client.connect('smtp.qq.com',25)
    client.login(username, password)
    #receivers.split(',')才能成功发送给多个收件人
    client.sendmail(sender, receivers.split(','), msg.as_string())
    client.quit()
    print( '邮件发送成功!')
except smtplib.SMTPRecipientsRefused:
    print( 'Recipient refused')
except smtplib.SMTPAuthenticationError:
    print( 'Auth error')
except smtplib.SMTPSenderRefused:
    print( 'Sender refused')
except smtplib.SMTPException as e:
    print(e.message)

你可能感兴趣的:(python)