溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用Python實(shí)現(xiàn)郵件發(fā)送

發(fā)布時(shí)間:2023-04-13 11:21:20 來源:億速云 閱讀:103 作者:iii 欄目:編程語言

今天小編給大家分享一下如何用Python實(shí)現(xiàn)郵件發(fā)送的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一. 準(zhǔn)備用來發(fā)送郵件的郵箱賬號(hào)

準(zhǔn)備好郵箱賬號(hào)和郵箱登錄授權(quán)碼。不同類型郵箱獲取授權(quán)碼的方式大同小異,這兒以QQ郵箱為例演示獲取授權(quán)碼步驟:

第一步:用網(wǎng)頁登錄QQ郵箱,找到幫助中心

如何用Python實(shí)現(xiàn)郵件發(fā)送

第二步:在幫助中心中選擇"客戶端設(shè)置"中的第2個(gè)問題:

如何用Python實(shí)現(xiàn)郵件發(fā)送

然后按照對(duì)應(yīng)的要求操作,得到授權(quán)碼并且保存。

二. 發(fā)送郵件的基本步驟

代碼發(fā)送郵件的步驟,和人工發(fā)送郵件步驟基本一致:登錄郵箱  -> 準(zhǔn)備郵件內(nèi)容   ->  發(fā)送郵件。

2.1 登錄郵箱
import smtplib
1. 連接郵箱服務(wù)器
連接對(duì)象 = smtplib.SMTP_SSL(服務(wù)器地址, 郵箱服務(wù)端口)
- 服務(wù)器地址:smtp.163.com(163郵箱)、smtp.qq.com(qq郵箱) - 郵箱服務(wù)端口:465或者25
2. 登錄郵箱 連接對(duì)象.login(郵箱賬號(hào), 授權(quán)碼)
2.2 準(zhǔn)備數(shù)據(jù)

數(shù)據(jù)指的需要發(fā)送的內(nèi)容。郵件內(nèi)容的構(gòu)建需要涉及到另外一個(gè)庫email,它可以?來構(gòu)建郵件主題以及各種形式的郵件內(nèi)容(包括文字內(nèi)容、圖片內(nèi)容、html內(nèi)容、附件)等,這?先簡(jiǎn)單說一下郵件主題和?本內(nèi)容,其他形式的內(nèi)容在后?面郵件內(nèi)容部分詳細(xì)講解。

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
1. 創(chuàng)建郵件對(duì)象
郵件對(duì)象 = MIMEMultipart()
2. 設(shè)置郵件主題
主題對(duì)象 = Header(郵件標(biāo)題, 編碼方式).encode()
郵件對(duì)象['Subject'] = 主題對(duì)象
3.設(shè)置郵件發(fā)送者
郵件對(duì)象['From'] = '用戶名 '
4.設(shè)置郵件接受者
郵件對(duì)象['To'] = '收件?1;收件?2;收件人3...'
5. 添加文字內(nèi)容
文字內(nèi)容對(duì)象 = MIMEText(內(nèi)容, 類型, 編碼方式)
- 內(nèi)容:就是文字字符串
- 類型:plain(簡(jiǎn)單的?字內(nèi)容)、html(超文本) 郵件對(duì)象.attach(文字對(duì)象)
2.3 發(fā)送郵件

三.各種類型郵件發(fā)送實(shí)例

連接對(duì)象.sendmail(發(fā)件?, 收件人, 郵件對(duì)象.as_string())
連接對(duì)象.quit()
3.1普通文字內(nèi)容郵件

這類郵件的郵件正文只有普通文字信息,沒有超文本也沒有圖片,并且沒有附件:

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. 準(zhǔn)備數(shù)據(jù)
# 創(chuàng)建郵件對(duì)象
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()

如何用Python實(shí)現(xiàn)郵件發(fā)送

3.2 超文本文件內(nèi)容

正文更加豐富和有趣的一種郵件,生活中我們接收到的來自各大平臺(tái)發(fā)送的郵件都是這類郵件,核心代碼格式如下:

from email.mime.text import MIMEText
html?本對(duì)象 = MIMEText(html內(nèi)容字符串, 'html', 編碼方式) 郵件對(duì)象.attach(html?本對(duì)象)

具體代碼:

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 = """我是正?中的標(biāo)題郵件正文描述性文字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()

如何用Python實(shí)現(xiàn)郵件發(fā)送

3.3 發(fā)送附件

郵件內(nèi)容除了正文內(nèi)容,有的時(shí)候還需要將各種文件以附件的形式單獨(dú)發(fā)送,發(fā)送附件的核心代碼如下:

from email.mime.text import MIMEText
?文件對(duì)象 = MIMEText(?件二進(jìn)制數(shù)據(jù), 'base64', 編碼?式)
文件對(duì)象["Content-Disposition"] = 'attachment; filename="?件名"'
郵件對(duì)象.attach(?件對(duì)象)

具體代碼:

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實(shí)現(xiàn)郵件發(fā)送

以上就是“如何用Python實(shí)現(xiàn)郵件發(fā)送”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI