使用Python傳送電子郵件
阿新 • • 發佈:2018-12-21
SMTP傳送郵件:
我這裡使用的qq郵箱伺服器,所以執行之前應先把qq郵箱中的相應服務開啟;
1.傳送文字郵件
#傳送文字郵件 import smtplib from email.mime.text import MIMEText from email.header import Header sender='[email protected]' pwd='xxxxxxxx'#在開通相關的服務是會給你相應的密碼,不是你自己登陸qq的密碼 receivers=['[email protected]','[email protected]']#收件人的郵箱 #三個引數:第一個為文字內容,第二個為plain設定文字格式,第三個utf-8設定編碼 message=MIMEText('PYTHON 測試傳送郵件。。。。。','plain','utf-8') #標準郵件需要3個頭部資訊 message['From']=Header("郵件測試",'utf-8')#發件人 message['To']=Header("測試",'utf-8')#收件人 message['Subject']=Header('Python SMTP郵件測試','utf-8')#郵件標題 try: #使用非本地伺服器,需要使用ssl連線 smtpObj=smtplib.SMTP_SSL("smtp.qq.com",465) smtpObj.login(sender,pwd)#登入第三方伺服器 smtpObj.sendmail(sender,receivers,message.as_string()) print("郵件傳送成功") except smtplib.SMTPException as e: print("Error: 無法傳送郵件,因為:%s"% e)
2.傳送帶有附件的郵件(包括HTML格式的郵件):
#傳送帶附件的郵件 import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage sender='[email protected]' pwd='XXXXXXXXXXXXXXX'#開通郵箱服務後,設定客戶端的授權密碼 receivers=['[email protected]
']#收件人的郵箱 #建立一個帶附件的例項 message=MIMEMultipart("related") # #三個引數:第一個為文字內容,第二個為plain設定文字格式,第三個utf-8設定編碼 # message=MIMEText('PYTHON 測試傳送郵件。。。。。','plain','utf-8') #標準郵件需要3個頭部資訊 message['From']=Header("郵件測試",'utf-8')#發件人 message['To']=Header("測試",'utf-8')#收件人 message['Subject']=Header('Python SMTP郵件測試','utf-8')#郵件標題 #郵件正文 message.attach(MIMEText('PYTHON 測試傳送郵件。。。。。','plain','utf-8')) #構造附件1,傳送當前目錄下的text1.txt檔案 att1=MIMEText(open('test1.txt','rb').read(),'base64','utf-8') att1["Content-Type"]='application/octet-stream' att1["Content-Disposition"]='attachment;filename="zxj.txt"' message.attach(att1) #構造附件2,傳送當前目錄下的圖片 fp=open('text.jpg','rb') msgImage=MIMEImage(fp.read()) fp.close() msgImage.add_header('Content-ID','<1>') message.attach(msgImage) #傳送html格式的文字並有圖片嵌入,此時,前面的郵件正文變成附近傳送 msgAlternative=MIMEMultipart("alternative") mail_msg="""<p>Python 郵件測試</p> <p>圖片例項:</p> <p><img src="cid:1"></p> """ msgAlternative.attach(MIMEText(mail_msg,'html','utf-8')) message.attach(msgAlternative) try: #使用非本地伺服器,需要使用ssl連線 smtpObj=smtplib.SMTP_SSL("smtp.qq.com",465) smtpObj.login(sender,pwd)#登入第三方伺服器 smtpObj.sendmail(sender,receivers,message.as_string()) print("郵件傳送成功") except smtplib.SMTPException as e: print("Error: 無法傳送郵件,因為:%s"% e)