今天小編給大家分享一下如何用Python實現(xiàn)郵件發(fā)送的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
創(chuàng)新互聯(lián)專注于容城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供容城營銷型網(wǎng)站建設(shè),容城網(wǎng)站制作、容城網(wǎng)頁設(shè)計、容城網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造容城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供容城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
準備好郵箱賬號和郵箱登錄授權(quán)碼。不同類型郵箱獲取授權(quán)碼的方式大同小異,這兒以QQ郵箱為例演示獲取授權(quán)碼步驟:
第一步:用網(wǎng)頁登錄QQ郵箱,找到幫助中心
第二步:在幫助中心中選擇"客戶端設(shè)置"中的第2個問題:
然后按照對應(yīng)的要求操作,得到授權(quán)碼并且保存。
代碼發(fā)送郵件的步驟,和人工發(fā)送郵件步驟基本一致:登錄郵箱 -> 準備郵件內(nèi)容 -> 發(fā)送郵件。
import smtplib 1. 連接郵箱服務(wù)器 連接對象 = smtplib.SMTP_SSL(服務(wù)器地址, 郵箱服務(wù)端口) - 服務(wù)器地址:smtp.163.com(163郵箱)、smtp.qq.com(qq郵箱) - 郵箱服務(wù)端口:465或者25 2. 登錄郵箱 連接對象.login(郵箱賬號, 授權(quán)碼)
數(shù)據(jù)指的需要發(fā)送的內(nèi)容。郵件內(nèi)容的構(gòu)建需要涉及到另外一個庫email,它可以?來構(gòu)建郵件主題以及各種形式的郵件內(nèi)容(包括文字內(nèi)容、圖片內(nèi)容、html內(nèi)容、附件)等,這?先簡單說一下郵件主題和?本內(nèi)容,其他形式的內(nèi)容在后?面郵件內(nèi)容部分詳細講解。
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header 1. 創(chuàng)建郵件對象 郵件對象 = MIMEMultipart() 2. 設(shè)置郵件主題 主題對象 = Header(郵件標題, 編碼方式).encode() 郵件對象['Subject'] = 主題對象 3.設(shè)置郵件發(fā)送者 郵件對象['From'] = '用戶名 ' 4.設(shè)置郵件接受者 郵件對象['To'] = '收件?1;收件?2;收件人3...' 5. 添加文字內(nèi)容 文字內(nèi)容對象 = MIMEText(內(nèi)容, 類型, 編碼方式) - 內(nèi)容:就是文字字符串 - 類型:plain(簡單的?字內(nèi)容)、html(超文本) 郵件對象.attach(文字對象)
連接對象.sendmail(發(fā)件?, 收件人, 郵件對象.as_string()) 連接對象.quit()
這類郵件的郵件正文只有普通文字信息,沒有超文本也沒有圖片,并且沒有附件:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header # 1. 連接郵箱服務(wù)器 con = smtplib.SMTP_SSL('smtp.163.com', 465) # 2. 登錄郵箱 con.login('XXXX@163.com', 'XXXXX') # 2. 準備數(shù)據(jù) # 創(chuàng)建郵件對象 msg = MIMEMultipart() # 設(shè)置郵件主題 subject = Header('找回密碼', 'utf-8').encode() msg['Subject'] = subject # 設(shè)置郵件發(fā)送者 msg['From'] = 'XXXX@163.com' # 設(shè)置郵件接受者 msg['To'] = '726550822@qq.com' # 添加?文字內(nèi)容 text = MIMEText('忘記密碼需要找回密碼', 'plain', 'utf-8') msg.attach(text) # 3.發(fā)送郵件 con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string()) con.quit()
正文更加豐富和有趣的一種郵件,生活中我們接收到的來自各大平臺發(fā)送的郵件都是這類郵件,核心代碼格式如下:
from email.mime.text import MIMEText html?本對象 = MIMEText(html內(nèi)容字符串, 'html', 編碼方式) 郵件對象.attach(html?本對象)
具體代碼:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header con = smtplib.SMTP_SSL('smtp.163.com', 465) con.login('xxxx@163.com', 'xxxxxx') msg = MIMEMultipart() subject = Header('找回密碼', 'utf-8').encode() msg['Subject'] = subject msg['From'] = 'xxxx@163.com' msg['To'] = '726550822@qq.com' # 添加html內(nèi)容 content = """我是正?中的標題郵件正文描述性文字1郵件正?描述性文字2 百度圖片百度?下 """ html = MIMEText(content, 'html', 'utf-8') msg.attach(html) # 發(fā)送郵件 con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string()) con.quit()
郵件內(nèi)容除了正文內(nèi)容,有的時候還需要將各種文件以附件的形式單獨發(fā)送,發(fā)送附件的核心代碼如下:
from email.mime.text import MIMEText ?文件對象 = MIMEText(?件二進制數(shù)據(jù), 'base64', 編碼?式) 文件對象["Content-Disposition"] = 'attachment; filename="?件名"' 郵件對象.attach(?件對象)
具體代碼:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.header import Header from email.mime.message import MIMEMessage from copy import deepcopy con = smtplib.SMTP_SSL('smtp.163.com', 465) con.login('xxxx@163.com', 'xxxxxx') msg = MIMEMultipart() subject = Header('?文件附件發(fā)送', 'utf-8').encode() msg['Subject'] = subject msg['From'] = 'xxxx@163.com' msg['To'] = '726550822@qq.com' # 添加?文件附件 file1 = MIMEText(open('files/test.txt', 'rb').read(), 'base64', 'utf-8') file1["Content-Disposition"] = 'attachment; filename="test.txt"' msg.attach(file1) file2 = MIMEText(open('files/pyecharts的使?用.pdf', 'rb').read(), 'base64', 'utf-8') file2["Content-Disposition"] = 'attachment; filename="test.pdf"' msg.attach(file2) # 發(fā)送郵件 con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string()) con.quit()
以上就是“如何用Python實現(xiàn)郵件發(fā)送”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。