本例使用126郵箱,需開通POP3/SMTP服務。
- 登錄126郵箱,在設置-->POP3/SMTP/IMAP 中設置如下選項,記住服務器地址。
下面為已調通的Python3代碼
1 # coding:utf-8 2 # smtplib模塊負責連接服務器和發送郵件 3 # MIMEText:定義郵件的文字數據 4 # MIMEImage:定義郵件的圖片數據 5 # MIMEMultipart:負責將文字圖片音頻組裝在一起添加附件 6 import smtplib # 加載smtplib模塊 7 from email.mime.text import MIMEText 8 from email.utils import formataddr 9 from email.mime.application import MIMEApplication 10 from email.mime.image import MIMEImage 11 from email.mime.multipart import MIMEMultipart 12 13 sender = 'xxx@126.com' # 發件人郵箱賬號 14 receive = 'xxx@qq.com' # 收件人郵箱賬號 15 passwd = 'xxx' 16 mailserver = 'smtp.126.com' 17 port = '25' 18 sub = 'Python3 test' 19 20 try: 21 msg = MIMEMultipart('related') 22 msg['From'] = formataddr(["sender", sender]) # 發件人郵箱昵稱、發件人郵箱賬號 23 msg['To'] = formataddr(["receiver", receive]) # 收件人郵箱昵稱、收件人郵箱賬號 24 msg['Subject'] = sub 25 #文本信息 26 #txt = MIMEText('this is a test mail', 'plain', 'utf-8') 27 #msg.attach(txt) 28 29 #附件信息 30 attach = MIMEApplication(open("D:\xx\\tool\pycharm\\1.csv").read()) 31 attach.add_header('Content-Disposition', 'attachment', filename='1.csv') 32 msg.attach(attach) 33 34 #正文顯示圖片 35 body = """ 36 <b>this is a test mail:</b> 37 <br><img src="cid:image"><br> 38 """ 39 text = MIMEText(body, 'html', 'utf-8') 40 f = open('D:\xx\pip.png', 'rb') 41 pic = MIMEImage(f.read()) 42 f.close() 43 pic.add_header('Content-ID', '<image>') 44 msg.attach(text) 45 msg.attach(pic) 46 47 48 server = smtplib.SMTP(mailserver, port) # 發件人郵箱中的SMTP服務器,端口是25 49 server.login(sender, passwd) # 發件人郵箱賬號、郵箱密碼 50 server.sendmail(sender, receive, msg.as_string()) # 發件人郵箱賬號、收件人郵箱賬號、發送郵件 51 server.quit() 52 print('success') 53 except Exception as e: 54 print(e)
發送成功如下圖所示:
在測試過程中有遇到如下報錯,調用126郵箱服務器來發送郵件,需要開啟POP3/SMTP服務,開通后會有一個126郵箱客戶端授權碼,代碼中的“passwd”要用此授權碼代碼郵箱的登錄密碼。
(535, b'Error: authentication failed')