欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用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 郵箱為例,其它大家自行嘗試,都基本類似

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

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

3 寫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è)類介紹

1.MIMEText類

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

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

_subtype:郵件正文內(nè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類

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

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

_subtype:圖片的類型,可以是"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類

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

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

_subtype:音頻文件的類型,可以是"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類

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

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

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

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

_payload:MIME類型的內(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  #往郵件中寫內(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í),可以寫多個(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ā)件人名稱,第二個(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ù)可以以列表的方式寫多個(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  #往郵件中寫內(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í),可以寫多個(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ā)件人名稱,第二個(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ù)可以以列表的方式寫多個(gè)
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

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

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

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

# 1 導(dǎo)入模塊
import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText  #往郵件中寫內(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í),可以寫多個(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ā)件人名稱,第二個(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可以任意寫,寫什么名字,郵件中顯示什么名字
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類型:
    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ì)稱加密.png', 'rb')
msgImage = MIMEImage(fp.read(),'png')
fp.close()

# 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字
msgImage.add_header('Content-Disposition', 'attachment', filename="對(duì)稱加密.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ù)可以以列表的方式寫多個(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和Prometheus跟蹤天氣的使用方法

    使用Python和Prometheus跟蹤天氣的使用方法

    這篇文章主要介紹了使用Python和Prometheus跟蹤天氣的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 用openCV和Python 實(shí)現(xiàn)圖片對(duì)比,并標(biāo)識(shí)出不同點(diǎn)的方式

    用openCV和Python 實(shí)現(xiàn)圖片對(duì)比,并標(biāo)識(shí)出不同點(diǎn)的方式

    今天小編就為大家分享一篇用openCV和Python 實(shí)現(xiàn)圖片對(duì)比,并標(biāo)識(shí)出不同點(diǎn)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 解決ROC曲線畫出來(lái)只有一個(gè)點(diǎn)的問(wèn)題

    解決ROC曲線畫出來(lái)只有一個(gè)點(diǎn)的問(wèn)題

    今天小編就為大家分享一篇解決ROC曲線畫出來(lái)只有一個(gè)點(diǎn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • BeautifulSoup中find和find_all的使用詳解

    BeautifulSoup中find和find_all的使用詳解

    這篇文章主要介紹了BeautifulSoup中find和find_all的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python中文文本處理利器jieba分詞庫(kù)使用

    Python中文文本處理利器jieba分詞庫(kù)使用

    這篇文章主要給大家介紹了關(guān)于Python中文文本處理利器jieba分詞庫(kù)使用的相關(guān)資料,jieba是python中一個(gè)重要的第三方中文分詞函數(shù)庫(kù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Python SQLite3簡(jiǎn)介

    Python SQLite3簡(jiǎn)介

    這篇文章主要為大家詳細(xì)介紹了Python SQLite3的簡(jiǎn)單介紹以及使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類

    Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類

    今天給大家整理了Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類的文章,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類

    Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類

    這篇文章主要介紹了Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類,這是基礎(chǔ)學(xué)習(xí)的第三篇內(nèi)容,小編已把前兩篇鏈接放在下面,需要學(xué)習(xí)的同學(xué)可以參考一下
    2022-05-05
  • python監(jiān)控linux內(nèi)存并寫入mongodb(推薦)

    python監(jiān)控linux內(nèi)存并寫入mongodb(推薦)

    這篇文章主要介紹了python監(jiān)控linux內(nèi)存并寫入mongodb的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • 關(guān)于Python函數(shù)的定義和參數(shù)

    關(guān)于Python函數(shù)的定義和參數(shù)

    這篇文章主要介紹了關(guān)于Python函數(shù)的定義和參數(shù),Python中的函數(shù)我們可以理解成是一種具有功能的包裝塊,也就是封裝具有某一種功能的代碼塊,需要的朋友可以參考下
    2023-04-04

最新評(píng)論