电子邮件标准库包装器

mail-parser的Python项目详细描述


PyPI versionBuild StatusCoverage StatusBCH compliance `<;https://microbadger.com/images/fmantuano/spamscope-mail-parser>;`

SpamScope

SPAM范围

邮件分析器

概述

邮件分析器不仅仅是 emailPython 标准库。它给你一个简单的方法从原始邮件传递到 可以在代码中使用的python对象。它是 SpamScope

邮件分析器可以分析outlook电子邮件格式(.msg)。要使用此功能, 您需要安装libemail-outlook-message-perlpackage。为了 基于debian的系统:

$ apt-get install libemail-outlook-message-perl

有关详细信息:

$ apt-cache show libemail-outlook-message-perl

邮件解析器支持python 3。

Web上的邮件分析器

说明

邮件解析器将原始邮件作为输入,并生成一个已解析的对象。 此对象的属性与RFC headers

  • 密件抄送
  • 抄送
  • 日期
  • 交付至
  • from(不是from,因为是python的关键字)
  • 消息ID
  • 收到
  • 回复至
  • 主题

还有其他属性要获取:-body-body html-body plain- 标题-附件-发件人IP地址-到域-时区

若要获取自定义标题,应将“-”替换为“\例如 标题X-MSMail-Priority

$ mail.X_MSMail_Priority

received头在hop中被解析和拆分。田野 支持的是:-by-date-date_utc-delay(两跳之间)- envelope_from-envelope_sender-for-from-hop-带

邮件分析器可以检测邮件中的缺陷: defects: 带有一些不合规RFC部分的邮件

所有属性都有一个json和raw属性,您可以使用它: name_json-name_raw

示例:

$ mail.to (Python object)
$ mail.to_json (JSON)
$ mail.to_raw (raw header)

命令行工具使用json格式。

缺陷

这些缺陷可以用来躲避反垃圾邮件过滤器。一个例子是 边界错误的邮件可以隐藏不合法的 结语(通常是恶意软件)。这个图书馆可以接受这些结语。

apache 2开源许可证

邮件解析器可以免费下载、使用和修改。它是 在Apache2许可下可用。

如果你想支持这个项目:

Donate

作者

主要作者

fedele mantuanoLinkedIn

安装

克隆存储库

git clone https://github.com/SpamScope/mail-parser.git

并使用setup.py

安装邮件分析器
$ cd mail-parser

$ python setup.py install

或者使用pip

$ pip install mail-parser

在项目中的使用

导入mailparser模块:

import mailparser

mail = mailparser.parse_from_bytes(byte_mail)
mail = mailparser.parse_from_file(f)
mail = mailparser.parse_from_file_msg(outlook_mail)
mail = mailparser.parse_from_file_obj(fp)
mail = mailparser.parse_from_string(raw_mail)

然后您可以获得所有零件

mail.attachments: list of all attachments
mail.body
mail.date: datetime object in UTC
mail.defects: defect RFC not compliance
mail.defects_categories: only defects categories
mail.delivered_to
mail.from_
mail.get_server_ipaddress(trust="my_server_mail_trust")
mail.headers
mail.mail: tokenized mail in a object
mail.message: email.message.Message object
mail.message_as_string: message as string
mail.message_id
mail.received
mail.subject
mail.text_plain: only text plain mail parts in a list
mail.text_html: only text html mail parts in a list
mail.to
mail.to_domains
mail.timezone: returns the timezone, offset from UTC
mail_partial: returns only the mains parts of emails

从命令行使用

如果使用pipsetup.py安装了mailparser,则可以使用它 使用命令行。

这些都是开关:

usage: mailparser [-h] (-f FILE | -s STRING | -k)
                   [-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}] [-j] [-b]
                   [-a] [-r] [-t] [-dt] [-m] [-u] [-c] [-d] [-o]
                   [-i Trust mail server string] [-p] [-z] [-v]

Wrapper for email Python Standard Library

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  Raw email file (default: None)
  -s STRING, --string STRING
                        Raw email string (default: None)
  -k, --stdin           Enable parsing from stdin (default: False)
  -l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}, --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
                        Set log level (default: WARNING)
  -j, --json            Show the JSON of parsed mail (default: False)
  -b, --body            Print the body of mail (default: False)
  -a, --attachments     Print the attachments of mail (default: False)
  -r, --headers         Print the headers of mail (default: False)
  -t, --to              Print the to of mail (default: False)
  -dt, --delivered-to   Print the delivered-to of mail (default: False)
  -m, --from            Print the from of mail (default: False)
  -u, --subject         Print the subject of mail (default: False)
  -c, --receiveds       Print all receiveds of mail (default: False)
  -d, --defects         Print the defects of mail (default: False)
  -o, --outlook         Analyze Outlook msg (default: False)
  -i Trust mail server string, --senderip Trust mail server string
                        Extract a reliable sender IP address heuristically
                        (default: None)
  -p, --mail-hash       Print mail fingerprints without headers (default:
                        False)
  -z, --attachments-hash
                        Print attachments with fingerprints (default: False)
  -sa, --store-attachments
                        Store attachments on disk (default: False)
  -ap ATTACHMENTS_PATH, --attachments-path ATTACHMENTS_PATH
                        Path where store attachments (default: /tmp)
  -v, --version         show program's version number and exit

It takes as input a raw mail and generates a parsed object.

示例:

$ mailparser -f example_mail -j

本例将以json格式向您展示标记化邮件。

来自raw mailparsed mail

异常

邮件分析器的异常层次结构:

MailParserError: Base MailParser Exception
|
\── MailParserOutlookError: Raised with Outlook integration errors
|
\── MailParserEnvironmentError: Raised when the environment is not correct
|
\── MailParserOSError: Raised when there is an OS error
|
\── MailParserReceivedParsingError: Raised when a received header cannot be parsed

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android java。伊奥。FileNotFoundException没有这样的文件或>目录,尽管已授予权限   java机器人将鼠标保持在窗口中   java我无法找到程序发送异常的原因   java创建按钮以更改背景   java如何在POJO类中使用HashMap并检索它?   java不可解PMD冲突:可以组合这些嵌套的if语句   java我正在努力提高Springboot+MyBatis中API的性能,仅用于Select查询   java在Spring中实例化Util类   java集合。洗牌(a)魔术?   java Jackson如何在没有已知属性的情况下失败,这与反序列化功能不同。在未知属性上失败   java spring rest@RequestBody未使用@Valid进行验证   如何匹配这种模式?(Java/regex)   java只有一个google play依赖项,但所有google play库都在应用程序外部库上   计算器如何在Java中使用按钮将两个输入放在两个单独的文本字段中?   java我正在尝试从文件中计算字符数   java如何获取工具。Windows上OpenJDK 11的jar?   java在本地时区上独立解析ZoneDateTime   java防止安卓键盘造成延迟   java在服务器上处理Excel文件