• 今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件


    直男,直接上代码。

    自己看打印的内容

    主要功能如下:

    #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
     1 import imapclient,re
     2 import pyzmail
     3 
     4 
     5 #提取邮件里面的链接
     6 def getDowmlodUrl():
     7     url = None
     8     #这里是腾讯企业邮箱,其他的自行百度
     9     imapObj = imapclient.IMAPClient('imap.exmail.qq.com',ssl=True)
    10     #邮箱和密码
    11     imapObj.login('xxxx@xxx.com','xxxxxxx')
    12     #默认收件箱
    13     imapObj.select_folder('INBOX',readonly=True)
    14     #搜索未读邮件,打印未读邮件的UID
    15     UIDS = imapObj.search('UNSEEN')
    16     print(UIDS)
    17     #UIDS = imapObj.search('ALL')#搜索全部的邮件
    18     if len(UIDS) >= 1:#存在未读邮件
    19         #获得邮件内容
    20         rawMessage = imapObj.fetch(UIDS[0],[b'BODY[]'])
    21         #选择第一封未读邮件
    22         messageObj = pyzmail.PyzMessage.factory(rawMessage[UIDS[0]][b'BODY[]'])
    23         #打印邮件信息,可以根据这些信息进行筛选
    24         print(messageObj.get_subject())#邮件主题
    25         print(messageObj.get_addresses('from'))#发件人
    26         print(messageObj.get_addresses('to'))#收件人
    27         print(messageObj.get_addresses('cc'))
    28         print(messageObj.get_addresses('bcc'))
    29 
    30         #邮件内容不为空时
    31         if messageObj.html_part != None:
    32             messageContent = messageObj.html_part.get_payload().decode(messageObj.html_part.charset)
    33             #打印邮件内容
    34             print(type(messageContent),messageContent)
    35             #提取邮件内容里面的链接
    36             pattern = re.compile(r'//[0-9A-Za-z./\?\=\:]+')
    37             m = re.search(pattern,messageContent)
    38             print('m',m)
    39             if m is not None:
    40                 print('http:' + m.group(0))
    41                 url = 'http:' + m.group(0)
    42             #如果没有则取提起邮件的附件
    43             else:
    44                 for part in messageObj.walk():
    45                     # name = part.get_param('name')
    46                     if part.get_filename() != None:
    47                         # print(part,part.get_filename())
    48                         with open(part.get_filename(), 'wb') as f:
    49                             f.write(part.get_payload(decode=True))
    50             #设置邮件已读
    51             imapObj.set_flags(rawMessage, b'\Seen', silent=False)
    52         else:
    53             pass
    54     #退出邮件
    55     imapObj.logout()
    56     #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
    57     return url
    58 
    59 getDowmlodUrl()
    View Code
  • 相关阅读:
    sqlplus 登陆报协议适配器错误
    C# 类型参数的约束
    每天学一点shell——tr
    每天学一点shell-------------------------sed
    每天学一点shell--------文本处理相关
    每天学一点java DecimalFormat
    Java String 创建了几个对象
    Java UDP数据报发送与接收 学习
    shell脚本-----------每天学一点调试
    shell脚本 ----每天学一点shell
  • 原文地址:https://www.cnblogs.com/lelexiu/p/11187967.html
Copyright © 2020-2023  润新知