主頁 > 知識庫 > Python基礎詳解之郵件處理

Python基礎詳解之郵件處理

熱門標簽:江蘇房產電銷機器人廠家 幫人做地圖標注收費算詐騙嗎 蘇州電銷機器人十大排行榜 遼寧400電話辦理多少錢 荊州云電銷機器人供應商 電信營業(yè)廳400電話申請 溫州旅游地圖標注 悟空智電銷機器人6 外呼不封號系統(tǒng)

一、發(fā)送電子郵件

Python標準庫提供了smtplib,用于實現(xiàn)SMTP協(xié)議發(fā)送郵件。標準庫還提供email模塊幫助我們構建郵件格式。SMTP(Simple Mail Transfer Protocol,即簡單郵件傳輸協(xié)議),是一組有源地址到目的地址傳送郵件的規(guī)則,用來控制信件的中轉方式。

  • 獲取QQ郵箱密碼(授權碼)

 

二、發(fā)送純文本格式的郵件

import smtplib

from email.mime.text import MIMEText
from email.header import Header

# 郵箱用戶名
sender = 'dad@qq.com'(輸入你的郵箱)
# 郵箱密碼(部分郵箱為授權碼)
password = '123456'(輸入你的密碼)
# 收件人郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發(fā)
receiver = ['baby@qq.com', ](輸入你要發(fā)送人的郵箱)
# 郵件正文
text = 'Hello,baby'
message = MIMEText(text, 'plain', 'utf-8')
# 發(fā)件人顯式的名字
message['From'] = Header('拿頭來堅持', 'utf-8')
# 收件人顯式的名字
message['To'] = Header('baby', 'utf-8')
# 郵件標題
message['Subject'] = '爸爸來信,請接收!'

try:
    # 使用QQ企業(yè)郵箱服務器發(fā)送
    smtp = smtplib.SMTP('smtp.qq.com')
    # 登錄
    smtp.login(sender, password)
    # 發(fā)送
    smtp.sendmail(sender, receiver, message.as_string())
    print('郵件發(fā)送成功!')
    # 退出服務器
    smtp.quit()
except smtplib.SMTPException as e:
    print('Error!郵件發(fā)送失?。?, e)

發(fā)送純文本格式的郵件執(zhí)行結果:

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

import smtplib

from email.mime.text import MIMEText
from email.header import Header

# 郵箱用戶名
sender = 'dad@qq.com'(輸入你的郵箱)
# 郵箱密碼(部分郵箱為授權碼)
password = '123456'(輸入你的密碼)
# 收件人郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發(fā)
receiver = ['baby@qq.com', ](輸入你要發(fā)送人的郵箱)
# 郵件正文
msg = '''
    p>a >拿頭來堅持/p>
          Life goes on, learning goes on
        /p> !---->/div>/div> div class="user-profile-head-info-b" data-v-d1dbb6f8>ul data-v-d1dbb6f8>li data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>被訪問量/div>/li> li data-v-d1dbb6f8>a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>24/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>原創(chuàng)文章/div>/a>/li> li data-v-d1dbb6f8>a  rel="external nofollow"  rel="external nofollow"  target="_blank" data-report-click="{quot;spmquot;:quot;3001.5476quot;}" data-report-query="spm=3001.5476" data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>作者排名/div>/a>/li> li data-v-d1dbb6f8>a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>762/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>粉絲數(shù)量/div>/a>/li>/ul>/div>/div>/div> div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46>div class="user-profile-body-inner" data-v-3f0fdf46>div class="user-profile-body-left" data-v-3f0fdf46>div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46>div class="user-general-info single-general-info" data-v-d487ed78>ul data-v-d487ed78>!----> !----> li class="user-general-info-join-csdn" data-v-d487ed78>i data-v-d487ed78>/i> span data-v-d487ed78>于/span> span class="user-general-info-key-word" data-v-d487ed78>2020-02-22/span> span data-v-d487ed78>加入CSDN/span>/li>/ul>/div> !----> div class="user-achievement user-profile-aside-common-box" data-v-d487ed78>div class="aside-common-box-head" data-v-d487ed78>獲得成就/div> div class="aside-common-box-bottom" data-v-d487ed78>div class="aside-common-box-content" data-v-d487ed78>ul data-v-d487ed78>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)">/i>
        div>獲得span>212/span>次點贊/div>
      /li>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)">/i>
        div>內容獲得span>111/span>次評論/div>
      /li>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)">/i>
        div>獲得span>562/span>次收藏/div>
      '''
# 指定消息體使用HTML格式
message = MIMEText(msg, 'html', 'utf-8')
# 發(fā)件人顯式的名字
message['From'] = Header('拿頭來堅持', 'utf-8')
# 收件人顯式的名字
message['To'] = Header('baby', 'utf-8')
# 郵件標題
message['Subject'] = '爸爸來信,請接收!'

try:
    # 使用QQ企業(yè)郵箱服務器發(fā)送
    smtp = smtplib.SMTP('smtp.qq.com')
    # 登錄
    smtp.login(sender, password)
    # 發(fā)送
    smtp.sendmail(sender, receiver, message.as_string())
    print('郵件發(fā)送成功!')
    # 退出服務器
    smtp.quit()
except smtplib.SMTPException as e:
    print('Error!郵件發(fā)送失敗!', e)

發(fā)送HTML格式的郵件的執(zhí)行結果:

四、發(fā)送帶附件的郵件

import smtplib

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 郵箱用戶名
sender = 'dad@qq.com'(輸入你的郵箱)
# 郵箱密碼(部分郵箱為授權碼)
password = '123456'(輸入你的密碼)
# 收件人郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發(fā)
receiver = ['baby@qq.com', ](輸入你要發(fā)送人的郵箱)
# 指定消息體使用復合類型
message = MIMEMultipart()
# 發(fā)件人顯式的名字
message['From'] = Header('拿頭來堅持', 'utf-8')
# 收件人顯式的名字
message['To'] = Header('baby', 'utf-8')
# 郵件標題
message['Subject'] = '爸爸來信,請接收!'
# 郵件正文
msg = '''
    p>a >拿頭來堅持/p>
          Life goes on, learning goes on
        /p> !---->/div>/div> div class="user-profile-head-info-b" data-v-d1dbb6f8>ul data-v-d1dbb6f8>li data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>被訪問量/div>/li> li data-v-d1dbb6f8>a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>24/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>原創(chuàng)文章/div>/a>/li> li data-v-d1dbb6f8>a  rel="external nofollow"  rel="external nofollow"  target="_blank" data-report-click="{quot;spmquot;:quot;3001.5476quot;}" data-report-query="spm=3001.5476" data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>作者排名/div>/a>/li> li data-v-d1dbb6f8>a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  data-v-d1dbb6f8>div class="user-profile-statistics-num" data-v-d1dbb6f8>762/div> div class="user-profile-statistics-name" data-v-d1dbb6f8>粉絲數(shù)量/div>/a>/li>/ul>/div>/div>/div> div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46>div class="user-profile-body-inner" data-v-3f0fdf46>div class="user-profile-body-left" data-v-3f0fdf46>div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46>div class="user-general-info single-general-info" data-v-d487ed78>ul data-v-d487ed78>!----> !----> li class="user-general-info-join-csdn" data-v-d487ed78>i data-v-d487ed78>/i> span data-v-d487ed78>于/span> span class="user-general-info-key-word" data-v-d487ed78>2020-02-22/span> span data-v-d487ed78>加入CSDN/span>/li>/ul>/div> !----> div class="user-achievement user-profile-aside-common-box" data-v-d487ed78>div class="aside-common-box-head" data-v-d487ed78>獲得成就/div> div class="aside-common-box-bottom" data-v-d487ed78>div class="aside-common-box-content" data-v-d487ed78>ul data-v-d487ed78>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)">/i>
        div>獲得span>212/span>次點贊/div>
      /li>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)">/i>
        div>內容獲得span>111/span>次評論/div>
      /li>li data-v-d487ed78>
        i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)">/i>
        div>獲得span>562/span>次收藏/div>
      '''
# 郵件附加html文件
message.attach(MIMEText(msg, 'html', 'utf-8'))
# 添加附件
attached_file = MIMEText(open(__file__, encoding='utf-8').read(), 'base64', 'utf-8')
# 指定附件的文件名和原先的文件不一樣
attached_file['Content-Disposition'] = 'attachment;filename="mail.py"'
# 郵件附加附件
message.attach(attached_file)
try:
    # 使用QQ企業(yè)郵箱服務器發(fā)送
    smtp = smtplib.SMTP('smtp.qq.com')
    # 登錄
    smtp.login(sender, password)
    # 發(fā)送
    smtp.sendmail(sender, receiver, message.as_string())
    print('郵件發(fā)送成功!')
    # 退出服務器
    smtp.quit()
except smtplib.SMTPException as e:
    print('Error!郵件發(fā)送失??!', e)

發(fā)送帶附件的郵件執(zhí)行結果:

五、發(fā)送圖片的郵件

import smtplib

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 郵箱用戶名
sender = 'dad@qq.com'(輸入你的郵箱)
# 郵箱密碼(部分郵箱為授權碼)
password = '123456'(輸入你的密碼)
# 收件人郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發(fā)
receiver = ['baby@qq.com', ](輸入你要發(fā)送人的郵箱)
# 利用related定義內嵌資源的郵件體
message = MIMEMultipart('related')
# 發(fā)件人顯式的名字
message['From'] = Header('拿頭來堅持', 'utf-8')
# 收件人顯式的名字
message['To'] = Header('baby', 'utf-8')
# 郵件標題
message['Subject'] = '爸爸來信,請接收!'
# 郵件正文
content = MIMEMultipart('alternative')
# html內容
msg = '''
    p>a >拿頭來堅持/p>
          Life goes on, learning goes on
    p>
    拿頭來堅持的個人主頁
    img src='cid:img01'>
    /p>
      '''
# 郵件附加html文件
message.attach(MIMEText(msg, 'html', 'utf-8'))
# 添加圖片
with open('csdn.png', 'rb') as f:
    img01 = MIMEImage(f.read())
# 定義資源的名字為img01
img01.add_header('Content-ID', 'img01')
# 郵件附加圖片
message.attach(img01)
try:
    # 使用QQ企業(yè)郵箱服務器發(fā)送
    smtp = smtplib.SMTP('smtp.qq.com')
    # 登錄
    smtp.login(sender, password)
    # 發(fā)送
    smtp.sendmail(sender, receiver, message.as_string())
    print('郵件發(fā)送成功!')
    # 退出服務器
    smtp.quit()
except smtplib.SMTPException as e:
    print('Error!郵件發(fā)送失?。?, e)

發(fā)送圖片的郵件執(zhí)行結果:

六、接收電子郵件

接受郵件有兩種常用的協(xié)議:POP3和IMAP協(xié)議

POP3協(xié)議(Post Office Protocol-Version3,即郵局協(xié)議版本3):允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作(如移動郵件、標記已讀等)不會反饋到服務器上,比如通過客戶端收取了郵箱的3封郵件并移動到其他文件夾,郵件服務器上的這些郵件不會被同步移動。

IMAP協(xié)議(Internet Mail Access Protocol,即Internet郵件訪問協(xié)議):提供Webmail與電子郵件客戶端之間的雙向通信,任何在客戶端做的改變都會同步到服務器上。在客戶端對郵件進行了操作,服務器上的郵件也會進行相應的操作。

七、使用POP3協(xié)議下載郵件

import poplib

from email.parser import Parser

# 登錄郵箱的用戶名
username = 'baby@qq.com'(輸入你的郵箱)
# 登錄郵箱的密碼(部分郵箱為授權碼)
password = '123456'(輸入你的密碼)
# 連接郵箱服務器
pop_server = poplib.POP3('pop.qq.com')
# 打印出郵箱服務器的歡迎文字
print(pop_server.getwelcome())
# 登錄郵箱服務器
pop_server.user(username)
pop_server.pass_(password)
# 打印出當前賬號的狀態(tài),第一個返回值為郵件數(shù),第二個返回值為占用空間
print('Server stat', pop_server.stat())
# 獲取所以郵件列表
resp, mails, octets = pop_server.list()
print(mails)
# 獲取最新的一封郵件(序列號最大的),郵件索引從1開始計數(shù)
index = len(mails)
resp, lines, octets = pop_server.retr(index)
content = b'\r\n'.join(lines).decode('utf-8')
# 解析出郵件
msg = Parser().parsestr(content)
# 可以根據(jù)郵件索引號直接從服務器刪除郵件
# pop_server.dele(index)
# 關閉連接
pop_server.quit()

執(zhí)行結果:

b'+OK XMail POP3 Server v1.0 Service Ready(XMail v1.0)'
Server stat (15, 50814)
[b'1 1255', b'2 1286', b'3 1310', b'4 1398', b'5 1458', b'6 1450', b'7 1602', b'8 1633', b'9 5001', b'10 2347', b'11 2371', b'12 2267', b'13 5033', b'14 5077', b'15 17326']

如果正確連接上服務器并且列出郵件數(shù)量,說明我們已經正確使用了POP3協(xié)議。

到此這篇關于Python基礎詳解之郵件處理的文章就介紹到這了,更多相關python郵件處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python實現(xiàn)自動化辦公郵件合并功能
  • Python利用機器學習算法實現(xiàn)垃圾郵件的識別
  • Python 發(fā)送SMTP郵件的簡單教程
  • Python一行代碼實現(xiàn)自動發(fā)郵件功能
  • Python 調用API發(fā)送郵件
  • Python基于SMTP發(fā)送郵件的方法
  • python基于SMTP發(fā)送QQ郵件
  • python 自動監(jiān)控最新郵件并讀取的操作
  • python實現(xiàn)發(fā)送郵件
  • python 實現(xiàn)網易郵箱郵件閱讀和刪除的輔助小腳本
  • python如何發(fā)送帶有附件、正文為HTML的郵件
  • python使用Windows的wmic命令監(jiān)控文件運行狀況,如有異常發(fā)送郵件報警
  • 用python監(jiān)控服務器的cpu,磁盤空間,內存,超過郵件報警
  • python郵件中附加文字、html、圖片、附件實現(xiàn)方法
  • Python用20行代碼實現(xiàn)完整郵件功能

標簽:喀什 濟南 景德鎮(zhèn) 臺灣 黃山 三沙 宿遷 欽州

巨人網絡通訊聲明:本文標題《Python基礎詳解之郵件處理》,本文關鍵詞  Python,基礎,詳解,之,郵件,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python基礎詳解之郵件處理》相關的同類信息!
  • 本頁收集關于Python基礎詳解之郵件處理的相關信息資訊供網民參考!
  • 推薦文章