最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python實(shí)現(xiàn)發(fā)送郵件的常用方法小結(jié)

 更新時(shí)間:2024年04月23日 10:03:35   作者:景天科技苑  
在日常工作中,我們可能經(jīng)常會(huì)用到發(fā)送郵件,但如果每次都人工來(lái)發(fā)送,那豈不是很麻煩,今天我們就來(lái)講解下如何通過(guò)python語(yǔ)言來(lái)優(yōu)雅地發(fā)送郵件

1.發(fā)送普通郵件

1 需要有一個(gè)發(fā)送郵件的郵箱

163,126,qq…

今天咱們是以 qq 郵箱為例,其它大家自行嘗試,都基本類(lèi)似

2 申請(qǐng)開(kāi)啟發(fā)送郵件

生成一個(gè)秘鑰:x**************ic # 很重要,不要泄露

3 寫(xiě)python代碼,實(shí)現(xiàn)發(fā)送郵件(smtp模塊–》python內(nèi)置)

就使用我們的賬號(hào):31*******35@qq.com

以QQ郵箱為例,開(kāi)啟授權(quán)碼圖解,登錄郵箱,點(diǎn)擊設(shè)置

往下拉,找到pop3那一串,點(diǎn)擊開(kāi)啟

點(diǎn)擊管理服務(wù),在彈出的頁(yè)面生成授權(quán)碼

點(diǎn)擊生成授權(quán)碼,然后需要掃碼發(fā)短信同意授權(quán),會(huì)生成一串字符串

4.發(fā)送郵件api詳解

在Python3中,使用mimetext模塊可以輕松地創(chuàng)建電子郵件消息。在發(fā)送電子郵件時(shí),我們需要設(shè)置郵件的主題、收件人、發(fā)件人、正文和附件等信息。
而mimetext模塊就是用來(lái)處理郵件中的文本和附件的。本文將詳細(xì)介紹mimetext模塊中的參數(shù)及其用法。

發(fā)郵件常見(jiàn)的幾個(gè)類(lèi)介紹

1.MIMEText類(lèi)

MIMEText類(lèi)用來(lái)創(chuàng)建郵件的正文,它有三個(gè)參數(shù):

_text:郵件正文內(nèi)容,可以是純文本或HTML格式。

_subtype:郵件正文內(nèi)容的類(lèi)型,可以是"plain"(純文本)、“html”(HTML格式)。

_charset:郵件正文內(nèi)容的編碼方式,常用的有"utf-8"、"gbk"等。

常見(jiàn)用法如下:

from email.mime.text import MIMEText

# ----------方法1
msg = MIMEText('測(cè)試郵件。收到請(qǐng)不用回復(fù)', 'plain', 'utf-8')

# -----------方法2
content = '''
 <p>我的地址:</p>
 <p><a >點(diǎn)擊進(jìn)入我的</a></p>
 <p>我的公眾號(hào)二維碼:</p>
 <p><img src="cid:image"></p>
 '''
html = MIMEText(content, 'html', 'utf-8')

2.MIMEImage類(lèi)

MIMEImage類(lèi)用來(lái)創(chuàng)建郵件中的圖片,它有兩個(gè)參數(shù):

_imagedata:圖片的二進(jìn)制數(shù)據(jù)。

_subtype:圖片的類(lèi)型,可以是"jpeg"、“gif”、"png"等。

代碼示例

from email.mime.image import MIMEImage
#-----------方法1
with open('test.jpeg', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'jpeg')
# ----------方法2
with open('test.gif', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'gif')
# ---------方法3
with open('test.png', 'rb') as f:
    image_data = f.read()
msg = MIMEImage(image_data, 'png')

3.MIMEAudio類(lèi)

MIMEAudio類(lèi)用來(lái)創(chuàng)建郵件中的音頻文件,它有兩個(gè)參數(shù):

_audiodata:音頻文件的二進(jìn)制數(shù)據(jù)。

_subtype:音頻文件的類(lèi)型,可以是"mp3"、"wav"等。

代碼示例

from email.mime.audio import MIMEAudio

with open('test.mp3', 'rb') as f:

    audio_data = f.read()

msg = MIMEAudio(audio_data, 'mp3')

4.MIMEBase類(lèi)

MIMEBase類(lèi)是所有MIME類(lèi)型的基類(lèi),它有四個(gè)參數(shù):

_maintype:MIME類(lèi)型的大類(lèi),常見(jiàn)的有"text"、“image”、“audio”、“video”、"application"等。

_subtype:MIME類(lèi)型的子類(lèi),如"text/plain"、“image/jpeg”、"audio/mp3"等。

_encoder:編碼方式,可以是"base64"、"quoted-printable"等。

_payload:MIME類(lèi)型的內(nèi)容,可以是文本、圖片、音頻、視頻等。

代碼示例:

from email.mime.base import MIMEBase

with open('test.pdf', 'rb') as f:

    pdf_data = f.read()

msg = MIMEBase('application', 'octet-stream')

msg.set_payload(pdf_data)

5.發(fā)送普通郵件完整代碼

# 1 導(dǎo)入模塊
import smtplib
from email.mime.text import MIMEText  #往郵件中寫(xiě)內(nèi)容的對(duì)象

from email.utils import formataddr #發(fā)件人信息


# 2 發(fā)送方和接收方配置
# 發(fā)件方郵箱:誰(shuí)發(fā)送的
msg_from='3*****2@qq.com'
# 生成的授權(quán)碼:不能泄露
password='h******ifj'
# # 發(fā)送給誰(shuí),可以寫(xiě)多個(gè)人,以列表形式存儲(chǔ)
msg_to=['li*****91@126.com','18*******68@139.com']
# 郵件主題
subject = "給領(lǐng)導(dǎo)問(wèn)好"  # 主題
content = "領(lǐng)導(dǎo)早上好,領(lǐng)導(dǎo)辛苦了" #郵件內(nèi)容
# 生成一個(gè)MIMEText對(duì)象(還有一些其它參數(shù))
msg = MIMEText(content)
# 放入郵件主題
msg['Subject'] = subject
# 放入發(fā)件人,元祖中內(nèi)容第一個(gè)是發(fā)件人名稱(chēng),第二個(gè)是發(fā)件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,將收件人轉(zhuǎn)化為以逗號(hào)分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通過(guò)ssl方式發(fā)送,服務(wù)器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登錄到郵箱
    s.login(msg_from, password)
    # 發(fā)送郵件:發(fā)送方,收件方,要發(fā)送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二個(gè)參數(shù)可以以列表的方式寫(xiě)多個(gè)
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

登錄郵箱查看,發(fā)送成功

2.發(fā)送html格式郵件

# 1 導(dǎo)入模塊
import smtplib
from email.mime.text import MIMEText  #往郵件中寫(xiě)內(nèi)容的對(duì)象

from email.utils import formataddr #發(fā)件人信息


# 2 發(fā)送方和接收方配置
# 發(fā)件方郵箱:誰(shuí)發(fā)送的
msg_from='3******72@qq.com'
# 生成的授權(quán)碼:不能泄露
password='h*********ifj'
# # 發(fā)送給誰(shuí),可以寫(xiě)多個(gè)人,以列表形式存儲(chǔ)
msg_to=['li*******1@126.com','1**********8@139.com']
# 郵件主題
subject = "非常重要,中了五百萬(wàn)"  # 主題


# 構(gòu)建html標(biāo)簽
content = '''
<h1>恭喜您中獎(jiǎng)了</h1>
<p><a >點(diǎn)我兌換獎(jiǎng)品</a></p>
'''


# 生成一個(gè)MIMEText對(duì)象(發(fā)送html格式郵件)
msg = MIMEText(content,'html','utf-8')
# 放入郵件主題
msg['Subject'] = subject
# 放入發(fā)件人,元祖中內(nèi)容第一個(gè)是發(fā)件人名稱(chēng),第二個(gè)是發(fā)件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,將收件人轉(zhuǎn)化為以逗號(hào)分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通過(guò)ssl方式發(fā)送,服務(wù)器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登錄到郵箱
    s.login(msg_from, password)
    # 發(fā)送郵件:發(fā)送方,收件方,要發(fā)送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二個(gè)參數(shù)可以以列表的方式寫(xiě)多個(gè)
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

郵箱查看,發(fā)送成功

3 發(fā)送帶附件郵件

添加附件時(shí)需要使用MIMEMultipart類(lèi),它有一個(gè)attach()方法可以添加郵件中的附件。用smtplib模塊發(fā)送示例代碼:

# 1 導(dǎo)入模塊
import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText  #往郵件中寫(xiě)內(nèi)容的對(duì)象

from email.utils import formataddr #發(fā)件人信息

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase


from email import encoders


# 2 發(fā)送方和接收方配置
# 發(fā)件方郵箱:誰(shuí)發(fā)送的
msg_from='3*******2@qq.com'
# 生成的授權(quán)碼:不能泄露
password='h**********fj'
# # 發(fā)送給誰(shuí),可以寫(xiě)多個(gè)人,以列表形式存儲(chǔ)
msg_to=['li*********1@126.com','1*********8@139.com','3*********2@qq.com']
# 郵件主題
subject = "老板,這是今日日?qǐng)?bào),請(qǐng)查收"  # 主題


# 創(chuàng)建一個(gè)帶附件的實(shí)例
msg = MIMEMultipart()

# 放入郵件主題
msg['Subject'] = subject
# 放入發(fā)件人,元祖中內(nèi)容第一個(gè)是發(fā)件人名稱(chēng),第二個(gè)是發(fā)件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,將收件人轉(zhuǎn)化為以逗號(hào)分隔的字符串
msg['to'] = ','.join(msg_to)


# 郵件正文內(nèi)容
msg.attach(MIMEText('今日日?qǐng)?bào):1 xxx', 'plain', 'utf-8'))


# 添加附件1
# 構(gòu)造附件1,傳送當(dāng)前目錄下的 ribao.txt 文件,注意文件要以rb的形式讀取
file = open('ribao.txt', 'rb').read()
att1 = MIMEText(file, 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'

# 這里的filename可以任意寫(xiě),寫(xiě)什么名字,郵件中顯示什么名字
att1.add_header('Content-Disposition', 'attachment', filename="日?qǐng)?bào).txt")
msg.attach(att1)




# 添加附件2--圖片
with open('gzh.png', 'rb') as f:
    # 設(shè)置附件的MIME和文件名,這里是png類(lèi)型:
    mime = MIMEBase('image', 'png', filename='gzh.png')
    # 加上必要的頭信息:
    mime.add_header('Content-Disposition', 'attachment', filename='gzh.png')
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的內(nèi)容讀進(jìn)來(lái):
    mime.set_payload(f.read())
    # 用Base64編碼:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)


# 構(gòu)造附件3,圖片格式
fp = open('對(duì)稱(chēng)加密.png', 'rb')
msgImage = MIMEImage(fp.read(),'png')
fp.close()

# 這里的filename可以任意寫(xiě),寫(xiě)什么名字,郵件中顯示什么名字
msgImage.add_header('Content-Disposition', 'attachment', filename="對(duì)稱(chēng)加密.png")
# 定義圖片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
msg.attach(msgImage)



try:
    # 通過(guò)ssl方式發(fā)送,服務(wù)器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登錄到郵箱
    s.login(msg_from, password)
    # 發(fā)送郵件:發(fā)送方,收件方,要發(fā)送的消息
    s.sendmail(msg_from, msg_to, msg.as_string()) #第二個(gè)參數(shù)可以以列表的方式寫(xiě)多個(gè)
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

查看郵件中,已包含附件

4.總結(jié)

綜上,就是我們通過(guò)python來(lái)發(fā)送郵件的常用方法的詳細(xì)流程,我們也可以結(jié)合linux定時(shí)任務(wù),或者celery來(lái)實(shí)現(xiàn)定時(shí)發(fā)送,也不難。上述代碼在使用時(shí)可以直接拿去用,只需要改下自己郵箱的參數(shù)即可。

到此這篇關(guān)于使用Python實(shí)現(xiàn)發(fā)送郵件的常用方法小結(jié)的文章就介紹到這了,更多相關(guān)Python發(fā)送郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python input()函數(shù)用法大全

    Python input()函數(shù)用法大全

    input()函數(shù)獲取用戶輸入數(shù)據(jù),實(shí)現(xiàn)用戶交互,本文重點(diǎn)給大家介紹Python input()函數(shù)用法大全,感興趣的朋友一起看看吧
    2021-04-04
  • Python用20行代碼實(shí)現(xiàn)完整郵件功能

    Python用20行代碼實(shí)現(xiàn)完整郵件功能

    這篇文章主要介紹了如何使用Python實(shí)現(xiàn)完整郵件功能的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容,希望能幫助到您
    2021-09-09
  • python如何創(chuàng)建TCP服務(wù)端和客戶端

    python如何創(chuàng)建TCP服務(wù)端和客戶端

    這篇文章主要為大家詳細(xì)介紹了python如何創(chuàng)建TCP服務(wù)端和客戶端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python基礎(chǔ)之迭代器與生成器

    python基礎(chǔ)之迭代器與生成器

    這篇文章主要為大家介紹了python迭代器與生成器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 一文帶你深入了解Python中的GeneratorExit異常處理

    一文帶你深入了解Python中的GeneratorExit異常處理

    GeneratorExit是Python內(nèi)置的異常,當(dāng)生成器或協(xié)程被強(qiáng)制關(guān)閉時(shí),Python解釋器會(huì)向其發(fā)送這個(gè)異常,下面我們來(lái)看看如何處理這一異常吧
    2025-03-03
  • python字典的setdefault的巧妙用法

    python字典的setdefault的巧妙用法

    這篇文章主要介紹了python字典的setdefault的巧妙用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python爬蟲(chóng)制作翻譯程序的示例代碼

    Python爬蟲(chóng)制作翻譯程序的示例代碼

    這篇文章主要介紹了Python爬蟲(chóng)制作翻譯程序的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 一文淺析Python中常用的魔法函數(shù)使用指南

    一文淺析Python中常用的魔法函數(shù)使用指南

    Python中的魔法函數(shù)(Magic Methods),也稱(chēng)為雙下劃線方法(dunder methods),是Python面向?qū)ο缶幊痰暮诵臋C(jī)制之一,本文將全面介紹這些魔法函數(shù),助你寫(xiě)出更Pythonic的代碼
    2025-12-12
  • 基于python 取余問(wèn)題(%)詳解

    基于python 取余問(wèn)題(%)詳解

    這篇文章主要介紹了基于python 取余問(wèn)題(%)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • pytest實(shí)現(xiàn)測(cè)試用例參數(shù)化

    pytest實(shí)現(xiàn)測(cè)試用例參數(shù)化

    這篇文章主要介紹了pytest實(shí)現(xiàn)測(cè)試用例參數(shù)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

福海县| 华容县| 江孜县| 易门县| 鹿邑县| 景东| 武城县| 阳春市| 镶黄旗| 屯留县| 汉中市| 涟源市| 中山市| 海安县| 高州市| 萨迦县| 灵璧县| 尤溪县| 蒲城县| 新干县| 泰州市| 凤台县| 辽源市| 青浦区| 盖州市| 南昌市| 景洪市| 井陉县| 普定县| 三明市| 抚顺县| 鲁甸县| 当雄县| 苍溪县| 榆林市| 南和县| 伊川县| 南华县| 康定县| 于田县| 宣恩县|