前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Parse Mail Header fo

Parse Mail Header fo

作者头像
py3study
发布2020-01-13 13:00:41
7970
发布2020-01-13 13:00:41
举报
文章被收录于专栏:python3python3

最近因为公司是做邮件行业的,所以用Python 写了一个登录邮箱 imap的程序,主要功能是 登录到相应的邮件地址,查找邮件在收件箱还是垃圾箱等,并提取邮件头的相应信息如:邮件主题、发送域、发送IP等,程序如下:

代码语言:javascript
复制
#!/usr/bin/python
import imaplib, email, re, string
from datetime import datetime, timedelta
from email.parser import Parser
from email.Utils import parseaddr
from email.Header import decode_header
def getmailheader(header_text, default="ascii"):
    """Decode header_text if needed"""
    try:
        headers=decode_header(header_text)
    except email.Errors.HeaderParseError:
        # This already append in email.base64mime.decode()
        # instead return a sanitized ascii string
        return header_text.encode('ascii', 'replace').decode('ascii')
    else:
        for i, (text, charset) in enumerate(headers):
            try:
                headers[i]=unicode(text, charset or default, errors='replace')
            except LookupError:
                # if the charset is unknown, force default
                headers[i]=unicode(text, default, errors='replace')
        return u"".join(headers)
obj = imaplib.IMAP4('mail.sohu.com')
obj.login('ransheroo@sohu.com','aklksbbl')
obj.select('INBOX')
typ, data = obj.uid('search', None, 'ALL')
num = string.split(data[0])[-1]
print num
typ, data = obj.uid('fetch', num, '(RFC822)')
msg = email.message_from_string(data[0][1])
received = msg.get_all('Received', '')
ip = re.search(r'\[(.*)\]', received[1]).group(1)
subject = getmailheader(msg.get('Subject', ''))
the_from = msg.get('From', '')
from_address = re.search(r'<(.*)>',the_from).group(1)
sender = msg.get('X-Sender', '')
if "<" in sender:
    sender = re.search(r'<(.*)>',sender).group(1)
print "Mail's subject is %s" % subject
print "Mail's ip is %s" % ip
print "Mail's from_address is %s" % from_address
print "Mail's sender is %s" % sender
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档