當前位置:首頁 » 編程語言 » python讀取郵件

python讀取郵件

發布時間: 2023-01-18 07:37:54

1. python對outlook郵件讀取

鑒於周報都要讀取不同郵件內容,想定時運行便於操作。

一些相關性質記錄:

寫郵件:

尚存問題:

2.附件沒法直接讀取,要保存後再讀取,尚需探索。

2. Python編寫一個程序 可以讀取郵件日誌(mbox.txt),統計每個郵件發出的郵件數量,並輸出結果。

由於工作需要在一大堆日誌裡面提取相應的一些固定字元,如果單純靠手工取提取,數據量大,勞心勞力,於是自然而然想到了用Python做一個對應的提取工具,代替手工提取的繁雜,涉及中文字元,正則表達式不好匹配,但不是不可以實現,這個以後優化時再說。

需求描述:

一個父目錄中存在多個子文件夾,子文件夾下有多個txt形式化的Log日誌,要求從所有地方Log日誌中找出CardType=9, CardNo=0時的CardID的值,並將其統計存儲到一個文本文件中,要求CardID不能夠重復。

需求解析:

首先獲取所有的Log日誌的全路徑,根據路徑分別載入到將各個Log日誌載入到內存中進行提取分析,並將結果存儲到給定的文本文件中。

解決方案:

為了盡可能的簡潔通用,這里使用配置文件作為輸入變數的依據。不多說,上代碼:

配置文件如下:

心得體會:

1、利用Python去處理一些日常的小任務,可以很方便的完成,相比較C/C++來說,這方面生產力高了不少。

2、本文設計對中文字元的處理,所以使用正則表達式不太怎麼方便,但不少不可以,後續版本中會添加對正則的支持!

3、由於初學中,所以代碼寫的不夠精煉簡潔,後續進行再優化!

3. python批量發送郵件--包括批量不同附件

小豬在公司做出納,乾的活卻包括了出納、會計、結算專員等工作,周末都要被無奈在家加班,主要還沒有加班費,簡直是被公司嚴重壓榨。每個月初都要給每個工長發預付款賬單郵件,月中發結算款賬單。重復性機械工作。
一個及格線上的程序員,最起碼的覺悟就是將重復性的機械工作自動化,於是,在我花了一個多小時,幫她給一部分工長發了一次郵箱後,默默的回來寫了這個腳本
所以,設計要點就是一個字——
恩,就醬。

經過我觀察,郵件內容分為兩種,這里先說第一種,「結算款」:
(1) 郵件內容(content)不變,為固定的txt文本
(2) 附件(attch)為每個工長的結算賬單(excel文件.xlsx),此文件命名為總賬單中自動分割出來的名字(暫時不懂怎麼分割出來的=.=),格式為:

(3) 郵件主題(Subject)為附件名(不帶後綴名)
(4) 郵件接收對象(工長)的名單及其郵箱地址基本不變,偶爾變動
(5)

(1) 將工長及其郵箱地址存為CSV文件的兩列,python中將其讀取為字典形式,存儲以供後續查詢郵箱地址。

(2) 遍歷文件夾中的附件(.xlsx類型文件),對其進行兩種操作,一方面將其名字(不帶路徑和後綴)提取出來,作為郵件主題(Subject),並對Subject進一步劃分,得到其中的人名(工長);另一方面,將其傳入MIMEbase模塊中轉為郵件附件對象。

(3) 由上述得到的人名(name),在字典形式的通訊錄中,查找相應的地址(value),即為收件人名稱和地址
(4) 利用python中的email模塊和smtp模塊,登錄自己的郵箱賬號,再對每個附件,得到的收件人名和地址,添加附件,發送郵件。done

在設計過程中有幾點需要注意
(1) 有時一個郵件地址對應兩個人名,此時應該在CSV文件中分為兩行存儲,而不是將兩個人名存為同一個鍵;
(2)有賬單.xlsx文件,通訊錄里卻沒存儲此人記錄,程序應該列印提示沒有通訊記錄的人名,且不能直接退出,要保證員工看到此提示,此第一版程序還有解決此問題;
(3)此程序發送的郵件內容為純文本,若要求郵件內容有不同格式(如部分加粗,部分紅色),還有小部分需要每次更改的地方(如郵件內容包含當前月份),如何解決?(這就是第二種郵件內容,「預算款」);
(4)重名的,暫時還沒碰到,程序中也沒給出解決方案。

第一版到此,20180830,待更新
第二版更新,20180904

第三版更新,20180909

轉戰CSDN博客,更多博客見傳送門《 xiaozhou的博客主頁 》

4. Python 收發郵件 和 刪除郵件 怎麼做到

郵件傳輸的SMTP協議,並根據該協議,利用了Python的『smtplib』和『email『模塊,完成郵件的成功發送。
簡單搭的報警郵件伺服器沒有UI,用FOXMAIL登錄獲取郵件頭刪除過慢,寫個python腳本快速清空郵件
#!/usr/bin/python
import poplib
def main():
uugame=poplib.POP3('mail.url.com',110)
uugame.user('[email protected]')
uugame.pass_('dicc1234')
print uugame.stat()
mailmax=uugame.stat()[0]
for i in range(mailmax):
uugame.dele(i+1)
print uugame.stat()
uugame.quit()
if __name__=="__main__":
main()

5. 我用python通過imap收取郵件時為什麼能收取

想用python做一個很簡單的接收郵件的功能,只看python的官方doc(http://docs.python.org/2/library/imaplib.html)真的很不好懂,經過google之,探索之,稍微總結一下:

要使用imap接收郵件,當然要導入imaplib拉.
import imaplib

然後按常規的,建立鏈接→登錄
conn = imaplib.IMAP4("imap.xxx.com",143)

conn.login("userName","password")

然後我想查看收件箱的郵件,咋辦呢?要先選擇一個目錄,收件箱默認名稱是"INBOX",IMAP是支持創建文件夾,查看其它文件夾的,如果是自己新建的文件夾,那麼名稱一般會是"INBOX.新建文件夾",不同的郵箱可能表示方式不一樣,如果你不知道的話,那運行conn.list()查看所有的文件夾.
conn.select("INBOX")

選擇後,然後查看文件夾,注意,IMAP的查看其實是一個搜索的過程,IMAP的原始命令是search all(大概的),在python里這么用:
type, data = conn.search(None, 'ALL')

然後返回的是這個收件箱里所有郵件的編號,按接收時間升序排列,最後的表示最近.
search這個很鬼麻煩,因為官方文檔里沒講這個函數的第二個參數怎麼用,於是找了下,可以填的命令有:
http://www.afterlogic.com/mailbee-net/docs/MailBee.ImapMail.Imap.Search_overload_1.html
於是如果我想找Essh郵件的話,使用
type, data = conn.search(None, '(SUBJECT "Essh")')

裡面要用一個括弧,代表是一個查詢條件,可以同時指定多個查詢條件,例如FROM xxxx SUBJECT "aaa",注意,命令要用括弧罩住(痛苦的嘗試)
search第一個參數是charset的意思,填None表示用默認ASCII,
data里獲取到的是一個只有一個字元串元素的數組,包含很多數字,用空格隔開
['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103'

於是想獲取最後一封的做法是:
msgList = data[0].split()
last = msgList[len(msgList) - 1]

然後把那個郵件獲取回來,用fetch函數
例子:
conn.fetch(last, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')

但是返回的是一串MIME編碼的東東,看不懂,如果能像eml那一操作一封郵件就好了.
方法是有的,用email庫.
import email

然後以RFC822獲取郵件格式,再用email.message_from_string轉換為message對象.就可以當message操作了,(http://docs.python.org/2/library/email.message.html)
type,data=connect.fetch(msgList[len(msgList)-1],'(RFC822)')
msg=email.message_from_string(data[0][1])
content=msg.get_payload(decode=True)

最後content得到就是郵件的內容了

6. python3判斷電腦關機api

執行py程序後,程序將每隔10分鍾(時間可以自己設置)讀取一次郵箱最新郵件,解析獲得郵件主題,當主題為「關機」時,程序將關閉電腦,為「重啟」時,將重啟電腦。在長時間離開電腦時,可以將py程序跑起來,如果需要關機或重啟,可以向郵箱發一封郵件即可

代碼

# -*- coding:utf-8 -*-

import os

import time

import poplib

import email

from email.header import decode_header

#========================================

# 讀取Email,獲取Email主題

#========================================

def getEmailSubject():

read = poplib.POP3('pop.163.com')

read.user('[email protected]')# 163郵箱用戶名

read.pass_('xxx') # 163郵箱設置中的客戶端授權密碼

allEmails = read.stat() # 讀取郵件信息

topEmail = read.top(allEmails[0], 0) # 獲取最新的一封郵件

tmp = []

# 解碼郵件,存入tmp

for s in topEmail[1]:

try:

tmp.append(s.decode())

except:

try:

tmp.append(s.decode('gbk'))

except:

tmp.append(s.decode('big5'))

message = email.message_from_string('\n'.join(tmp))

# 獲取郵件主題

subject = decode_header(message['Subject'])

if subject[0][1]:

subjectDecode = subject[0][0].decode(subject[0][1])

else:

subjectDecode = subject[0][0]

return subjectDecode

#=========================================

# 檢查Email的主題

#=========================================

def checkEmailSubject():

while True:

subject = getEmailSubject()

print('check subject ...')

print('subject is ' + subject)

if subject == '重啟':

os.system('shutdown -r -t 3')

break

if subject == '關機':

os.system('shutdown -s -t 3')

break

time.sleep(600) # 每10分鍾檢查一次

if __name__ == '__main__':

checkEmailSubject()

熱點內容
統治戰場kk腳本 發布:2025-07-17 11:53:45 瀏覽:239
安卓的數據線介面有什麼顏色 發布:2025-07-17 11:53:03 瀏覽:871
塑料壓縮器 發布:2025-07-17 11:52:15 瀏覽:724
手機百度雲如何秒上傳 發布:2025-07-17 11:46:27 瀏覽:612
交易貓買腳本靠譜嗎 發布:2025-07-17 11:32:27 瀏覽:520
伺服器系統盤一般做什麼陣列 發布:2025-07-17 11:16:05 瀏覽:363
如何用c語音實現放射密碼 發布:2025-07-17 11:13:03 瀏覽:735
lol腳本2017 發布:2025-07-17 10:52:18 瀏覽:827
編譯條件有哪些 發布:2025-07-17 10:42:51 瀏覽:334
apache設置靜態內容緩存時間 發布:2025-07-17 10:32:32 瀏覽:295