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

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

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

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

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

163,126,qq…

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

2 申請開啟發(fā)送郵件

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

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

就使用我們的賬號:31*******35@qq.com

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

往下拉,找到pop3那一串,點擊開啟

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

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

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

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

發(fā)郵件常見的幾個類介紹

1.MIMEText類

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

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

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

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

常見用法如下:

from email.mime.text import MIMEText

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

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

2.MIMEImage類

MIMEImage類用來創(chuàng)建郵件中的圖片,它有兩個參數(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類用來創(chuàng)建郵件中的音頻文件,它有兩個參數(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類型的基類,它有四個參數(shù):

_maintype:MIME類型的大類,常見的有"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)容的對象

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


# 2 發(fā)送方和接收方配置
# 發(fā)件方郵箱:誰發(fā)送的
msg_from='3*****2@qq.com'
# 生成的授權(quán)碼:不能泄露
password='h******ifj'
# # 發(fā)送給誰,可以寫多個人,以列表形式存儲
msg_to=['li*****91@126.com','18*******68@139.com']
# 郵件主題
subject = "給領(lǐng)導(dǎo)問好"  # 主題
content = "領(lǐng)導(dǎo)早上好,領(lǐng)導(dǎo)辛苦了" #郵件內(nèi)容
# 生成一個MIMEText對象(還有一些其它參數(shù))
msg = MIMEText(content)
# 放入郵件主題
msg['Subject'] = subject
# 放入發(fā)件人,元祖中內(nèi)容第一個是發(fā)件人名稱,第二個是發(fā)件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,將收件人轉(zhuǎn)化為以逗號分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通過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()) #第二個參數(shù)可以以列表的方式寫多個
    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)容的對象

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


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


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


# 生成一個MIMEText對象(發(fā)送html格式郵件)
msg = MIMEText(content,'html','utf-8')
# 放入郵件主題
msg['Subject'] = subject
# 放入發(fā)件人,元祖中內(nèi)容第一個是發(fā)件人名稱,第二個是發(fā)件地址
msg['From'] = formataddr(('景天',msg_from))
# 放入收件人,將收件人轉(zhuǎn)化為以逗號分隔的字符串
msg['to'] = ','.join(msg_to)
try:
    # 通過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()) #第二個參數(shù)可以以列表的方式寫多個
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

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

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

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

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

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ā)件方郵箱:誰發(fā)送的
msg_from='3*******2@qq.com'
# 生成的授權(quán)碼:不能泄露
password='h**********fj'
# # 發(fā)送給誰,可以寫多個人,以列表形式存儲
msg_to=['li*********1@126.com','1*********8@139.com','3*********2@qq.com']
# 郵件主題
subject = "老板,這是今日日報,請查收"  # 主題


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

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


# 郵件正文內(nèi)容
msg.attach(MIMEText('今日日報: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="日報.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)來:
    mime.set_payload(f.read())
    # 用Base64編碼:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)


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

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



try:
    # 通過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()) #第二個參數(shù)可以以列表的方式寫多個
    print('成功')
except BaseException as e:
    print(e)
finally:
    #不管是否發(fā)送成功,都退出服務(wù)
    s.quit()

查看郵件中,已包含附件

4.總結(jié)

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

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

相關(guān)文章

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

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

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

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

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

    解決ROC曲線畫出來只有一個點的問題

    今天小編就為大家分享一篇解決ROC曲線畫出來只有一個點的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • BeautifulSoup中find和find_all的使用詳解

    BeautifulSoup中find和find_all的使用詳解

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

    Python中文文本處理利器jieba分詞庫使用

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

    Python SQLite3簡介

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

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

    今天給大家整理了Python實現(xiàn)機器學(xué)習(xí)算法的分類的文章,文中有非常詳細(xì)的代碼示例,對正在學(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

最新評論