用python 处理邮件附件

 有时你的电脑上恰好没有 邮件阅读器,或者是附件被OE禁止访问了,郁闷啊,附件里边可能是很重要的文件,没法打开。如果你的电脑上装了python 的话,用下边一段代码就可以很快地把你的邮件中的附件完完整整的解析出来,并保存在你的电脑上。

 首先在你的电脑上e盘里建个mail 文件夹,里边再建个attach文件夹,把你的邮件(.eml)拷到mail 文件夹里,运行下边的代码就可以了。你的附件就保存在attach 文件夹里了,呵呵。

 

import  string,time,os
import  email
from  email.Header  import  Header
from  email.Header  import  decode_header
from  email.MIMEMultipart  import  MIMEMultipart
from  email.MIMEText  import  MIMEText
from  email  import  Encoders
import  base64

def  showMessage(mail):
    
if  mail.is_multipart():
        
for  part  in  mail.get_payload():
            showMessage(part)
    
else :
        types
= mail.get_content_type()
        
if  types == ' text/plain ' :
            
try :
               stmp
= mail.get_payload(decode = True)
               
print  stmp
            
except :
               
print   ' [*001*]BLANK '
               
        
elif  types == ' text/base64 ' :
            
try :
               stmp
= base64.decodestring(mail.get_payload())
               
print  stmp
            
except :
               
print   ' [*001*]BLANK '



def  showMessage4(mail):
    
for  part  in  mail.walk():
        contenttype
= part.get_content_type()
        
if  contenttype == ' text/plain ' :
            
try :
               
print  part.get_payload(decode = True)
            
except :
               
print   ''
        
elif  contenttype == ' text/base64 ' :
            
try :
                
print  base64.decodestring(part.get_payload())
            
except :
                
print   ''
            
def  PareMessageAttachMent(mail):
   
global  PATH
   count
= 0
   ErrorList
= []
   
   
for  part  in  mail.walk():
      contenttype 
=  part.get_content_type() 
      filename 
=  part.get_filename()
      
if  filename == None:
          
continue
      filename
= email.Header.decode_header(filename)[0][0]
      filename
= os.path.split(filename)[ 1 ]                           # 防止文件名出现全路径错误
      
      
if  filename:                                                  # ##解析邮件的附件内容
         fn = PATH + filename
         
if  os.path.exists(fn) == False:           
            f
= open(fn, ' wb ' )
            
try :
               f.write(base64.decodestring(part.get_payload()))
            
except :
               
pass
            f.close()
         
else :
            
continue


PATH
= ' e:/mail/Attach/ '

files
= os.listdir( ' e:/mail ' )
id
= 0
for  eachfile  in  files:
  
if  os.path.splitext(eachfile)[ 1 ].lower() == ' .eml ' :
    mail
= email.message_from_file(open( ' e:/mail/ ' + eachfile))
    mail[
' subject ' ],mail.get( ' subject ' )
    mail[
' From ' ],mail.get( ' From ' )
    mail[
' To ' ],mail.get( ' To ' )
    mail[
' date ' ],mail.get( ' date ' )
    subject 
=  email.Header.decode_header(mail[ ' subject ' ])[0][0]
    subcode
=   email.Header.decode_header(mail[ ' subject ' ])[0][ 1 ]
    FromAddr
= email.Header.decode_header(mail[ ' From ' ])[0][0]
    ToAddr
= email.Header.decode_header(mail[ ' To ' ])[0][0]
    date
= email.Header.decode_header(mail[ ' date ' ])[0][0]

    
print   '    ********* mail  ' ,id + 1 , '  ********* '
    id
= id + 1

    
print  eachfile
    showMessage(mail)
    PareMessageAttachMent(mail)
    
print   ' '

你可以使用Python标准库中的imaplib和email模块来下载邮件附件。下面是一个示例代码,可以从IMAP服务器中下载邮件附件并保存到本地磁盘中: ```python import imaplib import email import os # email账户信息 IMAP_SERVER = 'imap.example.com' EMAIL_ACCOUNT = 'your_email@example.com' EMAIL_PASSWORD = 'your_email_password' # 连接IMAP服务器 mail = imaplib.IMAP4_SSL(IMAP_SERVER) mail.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) mail.select('inbox') # 搜索邮件 typ, data = mail.search(None, 'ALL') # 遍历邮件 for num in data[0].split(): typ, data = mail.fetch(num, '(RFC822)') msg = email.message_from_bytes(data[0][1]) # 处理邮件附件 for part in msg.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue # 保存附件到本地磁盘 filename = part.get_filename() if filename: filepath = os.path.join('./attachments', filename) with open(filepath, 'wb') as f: f.write(part.get_payload(decode=True)) # 关闭连接 mail.close() mail.logout() ``` 在上面的代码中,我们首先使用imaplib模块连接到IMAP服务器,并进行身份验证。然后,我们使用mail.search()方法搜索所有邮件。接下来,我们遍历每个邮件,使用email模块解析邮件内容,并查找附件。最后,我们使用Python内置的文件操作函数保存附件到本地磁盘中。注意,你需要先创建一个名为“attachments”的文件夹,用于保存下载的邮件附件。 这只是一个简单的示例代码,具体实现可能需要根据你的需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值