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)