0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用python發(fā)送接收郵件

sanyue7758 ? 來源:處芯積律 ? 2023-07-11 09:30 ? 次閱讀

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。

Python發(fā)送郵件比較簡單,掌握兩個自帶庫 smtplib、email 即可,smtplib 負責(zé)發(fā)送郵件,email 負責(zé)構(gòu)造郵件(郵件內(nèi)容,主題,收件人,抄送人等)。

python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對smtp協(xié)議進行了簡單的封裝。

MIMEText用于電子郵件正文

MIMEMultipart用于電子郵件結(jié)構(gòu)

MIMEApplication用于在電子郵件中添加二進制數(shù)據(jù)(如文件附件)

MIMEImage用于圖片

importsmtplib
fromemail.mime.imageimportMIMEImage
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

1.發(fā)送郵件(可帶附件)

下面是一個使用Python中的smtplib庫發(fā)送電子郵件的示例代碼。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

#設(shè)置發(fā)送郵件的信息
sender_email='xxx@qq.com'#發(fā)件人郵箱賬號
sender_password='xxx'#發(fā)件人郵箱授權(quán)碼
receiver_email='xxx@qq.com'#收件人郵箱賬號
subject='Thisisatestemailby數(shù)字ICer'#郵件的主題

smtp_server='smtp.qq.com'#qq郵箱的SMTP服務(wù)器
smtp_port=465#qq郵箱的SMTP服務(wù)器端口465

defsend_email():
ret=True
try:
#創(chuàng)建一個multipart的郵件對象
msg=MIMEMultipart()
msg['From']=sender_email
msg['To']=receiver_email
msg['Subject']=subject

#添加郵件正文
body='Hello,thisisatestemail.'
msg.attach(MIMEText(body,'plain'))

#添加附件
#filename='attachment.pdf'
#withopen(filename,'rb')asf:
#attachment=MIMEApplication(f.read(),_subtype='pdf')
#attachment.add_header('Content-Disposition','attachment',filename=filename)
#msg.attach(attachment)
#
#發(fā)送郵件
withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp:
smtp.login(sender_email,sender_password)
smtp.sendmail(sender_email,receiver_email,msg.as_string())
print("郵件發(fā)送成功")
exceptExceptionase:
print("郵件發(fā)送失敗:",e)
send_email()

上面使用QQ郵箱帳戶發(fā)送郵件,也可以使用其他郵箱,需要定義郵箱的SMTP服務(wù)器和端口。

對于QQ郵箱,SMTP服務(wù)器是smtp.qq.com,SMTP端口是465。

生成授權(quán)碼

郵箱設(shè)置-->賬戶

設(shè)置POP3/IMAP/SMTP服務(wù)中

點擊生成授權(quán)碼,sender_password = 'xxx' 即為授權(quán)碼,并不是你的qq郵箱密碼;

074291de-1f28-11ee-962d-dac502259ad0.png授權(quán)碼

定義發(fā)件人電子郵件地址、授權(quán)碼和收件人電子郵件地址。

使用MIMEMultipart()創(chuàng)建一個多部分消息。使用msg['From']、msg['To']和msg['Subject']向消息添加發(fā)件人、收件人和主題。

使用MIMEText(body, 'plain')向消息添加郵件正文。

使用MIMEApplication()向消息添加附件。

其中 MIMEText 構(gòu)造對象時,第一個參數(shù)是郵件正文;第二個參數(shù)是subType,可以設(shè)置兩種格式 'plain' 和 'html';‘plain’ 表示發(fā)送純文本消息。

07617dec-1f28-11ee-962d-dac502259ad0.png發(fā)送郵件(可帶附件)

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

下面是發(fā)送HTML格式電子郵件的示例代碼。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication


sender_email='xxx@qq.com'#發(fā)件人郵箱賬號
sender_password='xxx'#發(fā)件人郵箱授權(quán)碼
receiver_email='xxx@qq.com'#收件人郵箱賬號
subject='Thisisatestemailby數(shù)字ICer'#郵件的主題
smtp_server='smtp.qq.com'#qq郵箱的SMTP服務(wù)器
smtp_port=465#qq郵箱的SMTP服務(wù)器端口465

mail_msg="""

Python郵件發(fā)送測試...

這是一個鏈接

""" msg=MIMEText(mail_msg,'html','utf-8') msg['From']=Header("sender_email",'utf-8') msg['To']=Header("receiver_email",'utf-8') msg['Subject']=Header(subject,'utf-8') try: withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp: smtp.login(sender_email,sender_password) smtp.sendmail(sender_email,receiver_email,msg.as_string()) print("郵件發(fā)送成功") exceptsmtplib.SMTPException: print("Error:無法發(fā)送郵件")

email.header是Python標準庫中的一個模塊,Header類是一個用于處理電子郵件頭部的工具,它可以處理中文等非ASCII字符集,確保電子郵件頭部可以正確顯示和解析。

當(dāng)在電子郵件頭部中使用中文或其他非ASCII字符時,需要對這些字符進行編碼,以確保電子郵件頭部可以被正確地顯示和解析。Header類可以將這些非ASCII字符編碼為合適的格式。

07880336-1f28-11ee-962d-dac502259ad0.png

發(fā)送HTML格式的郵件






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SMTP
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    11948
  • HTML
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    35524
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84757

原文標題:如何用python發(fā)送接收郵件

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    在Java中如何使用API來完成郵件接收發(fā)送

    接收發(fā)送。 通過該篇文章我們可以有如下收獲: 了解基于Java的電子郵件客戶端的實現(xiàn)方式 了解常見的郵箱如何集成 認識郵箱中的IMAP與POP協(xié)議 適用場景 郵件和短信很像,將信息
    的頭像 發(fā)表于 09-30 14:09 ?3468次閱讀
    在Java中如何使用API來完成<b class='flag-5'>郵件</b>的<b class='flag-5'>接收</b>與<b class='flag-5'>發(fā)送</b>

    何用LabVIEW接收E-mail?

    我用的是LabVIEW2012 。想做個發(fā)送接收電子郵件的程序。查看了網(wǎng)上的資料,沒有收獲。求教各位大哥了!如何用LabVIEW接收E-m
    發(fā)表于 04-14 20:29

    Labview發(fā)送notes郵件

    請前輩點撥如何用labview發(fā)送notes郵件,公司用這個郵件系統(tǒng),但是通過用例的方式是無法發(fā)出郵件的,求教
    發(fā)表于 07-21 09:43

    何用Python Ginkgo USB-CAN發(fā)送接收數(shù)據(jù)

    :Ginkgo USB-CAN Extend軟件對于第2項(開源python項目):Python CAN數(shù)據(jù)發(fā)送接收PC:兩臺PC(PC1,PC2)程序:1.確保在兩臺PC上都正確安
    發(fā)表于 03-12 10:32

    何用python中的serial向串口發(fā)送接收數(shù)據(jù)?

    何用python中的serial向串口發(fā)送接收數(shù)據(jù)?
    發(fā)表于 11-22 06:35

    何用Foxmail Server搭建郵件服務(wù)器

    何用Foxmail Server搭建郵件服務(wù)器 Foxmail Server(以下簡稱FMS)可以搭建出功能強大的郵件服務(wù)器。本文以FMS For Windows 2.0為例,從其設(shè)置、管理、收
    發(fā)表于 01-27 17:05 ?1349次閱讀

    C#教程之調(diào)用Outlook發(fā)送郵件

    C#教程之調(diào)用Outlook發(fā)送郵件,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-20 15:27 ?4次下載

    如何向您選擇的某人發(fā)送電子郵件

    您可以通過單擊左側(cè)的“發(fā)送”選項卡來確認您的電子郵件是否已發(fā)送。它將顯示您發(fā)送的所有電子郵件。如果未顯示最近
    的頭像 發(fā)表于 12-13 16:35 ?5049次閱讀
    如何向您選擇的某人<b class='flag-5'>發(fā)送電子郵件</b>

    基于SpringBoot實現(xiàn)郵件發(fā)送

    本項目通過Springboot發(fā)送email郵件,包括普通文本郵件 、HTML內(nèi)容板式郵件 、包含靜態(tài)資源郵件以及帶附件
    的頭像 發(fā)表于 02-28 14:58 ?1266次閱讀
    基于SpringBoot實現(xiàn)<b class='flag-5'>郵件</b><b class='flag-5'>發(fā)送</b>

    何用python發(fā)郵件呢?

    先做一些準備,把郵件SMTP服務(wù)器、收發(fā)mail、郵件標題和正文準備好。
    的頭像 發(fā)表于 03-06 14:49 ?780次閱讀

    怎么用Python構(gòu)建一個自動發(fā)送郵件的腳本

    ? 類似的應(yīng)用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發(fā)送郵件;網(wǎng)站宕機了,實時發(fā)送郵件提醒;網(wǎng)站負載過高,發(fā)送
    的頭像 發(fā)表于 10-21 14:47 ?770次閱讀
    怎么用<b class='flag-5'>Python</b>構(gòu)建一個自動<b class='flag-5'>發(fā)送</b><b class='flag-5'>郵件</b>的腳本

    怎么用Python構(gòu)建一個自動發(fā)送郵件的腳本

    呢? 類似的應(yīng)用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發(fā)送郵件;網(wǎng)站宕機了,實時發(fā)送郵件提醒;網(wǎng)站負載過高,發(fā)送
    的頭像 發(fā)表于 10-31 16:36 ?555次閱讀
    怎么用<b class='flag-5'>Python</b>構(gòu)建一個自動<b class='flag-5'>發(fā)送</b><b class='flag-5'>郵件</b>的腳本

    何用Python批量定制化發(fā)送郵件

    一封精美的元旦祝福郵件,但是郵件的內(nèi)容——比如姓名、祝福語等應(yīng)該怎樣動態(tài)渲染呢?答案是jinja2. jinja2 是一個Python 的模板引擎,使用jinja2,我們能夠在郵件HT
    的頭像 發(fā)表于 11-01 11:32 ?2215次閱讀

    利用Python發(fā)送郵件的 3 種方式

    1. 前言 郵件,作為最正式規(guī)范的溝通方式,在日常辦公過程中經(jīng)常被用到 我們都知道 Python內(nèi)置了對 SMTP 的支持,可以發(fā)送純文本、富文本、HTML 等格式的郵件 本文將聊聊利
    的頭像 發(fā)表于 11-02 11:37 ?980次閱讀

    如何使用Python編寫腳本來自動發(fā)送郵件

    Python是一種非常流行的編程語言,可以用于多種用途,包括自動化任務(wù)。其中一個常見的自動化任務(wù)是自動發(fā)送郵件。在本文中,我們將介紹如何使用Python編寫腳本來自動
    的頭像 發(fā)表于 12-07 11:36 ?1374次閱讀