summaryrefslogtreecommitdiff
path: root/python-mail-parser.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-mail-parser.spec')
-rw-r--r--python-mail-parser.spec912
1 files changed, 912 insertions, 0 deletions
diff --git a/python-mail-parser.spec b/python-mail-parser.spec
new file mode 100644
index 0000000..dfc22dd
--- /dev/null
+++ b/python-mail-parser.spec
@@ -0,0 +1,912 @@
+%global _empty_manifest_terminate_build 0
+Name: python-mail-parser
+Version: 3.15.0
+Release: 1
+Summary: Wrapper for email standard library
+License: Apache License, Version 2.0
+URL: https://github.com/SpamScope/mail-parser
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2b/3d/7f096230c4b61857c7682dc5497000a987b5f7e8376f54f0a5ed73e2cc3d/mail-parser-3.15.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-simplejson
+Requires: python3-six
+Requires: python3-ipaddress
+
+%description
+[![PyPI version](https://badge.fury.io/py/mail-parser.svg)](https://badge.fury.io/py/mail-parser)
+[![Build Status](https://travis-ci.org/SpamScope/mail-parser.svg?branch=develop)](https://travis-ci.org/SpamScope/mail-parser)
+[![Coverage Status](https://coveralls.io/repos/github/SpamScope/mail-parser/badge.svg?branch=develop)](https://coveralls.io/github/SpamScope/mail-parser?branch=develop)
+[![BCH compliance](https://bettercodehub.com/edge/badge/SpamScope/mail-parser?branch=develop)](https://bettercodehub.com/)
+[![](https://images.microbadger.com/badges/image/fmantuano/spamscope-mail-parser.svg)](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com")
+
+![SpamScope](https://raw.githubusercontent.com/SpamScope/spamscope/develop/docs/logo/spamscope.png)
+
+# mail-parser
+
+mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library.
+It give you an easy way to pass from raw mail to Python object that you can use in your code.
+It's the key module of [SpamScope](https://github.com/SpamScope/spamscope).
+
+mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems:
+
+```
+$ apt-get install libemail-outlook-message-perl
+```
+
+For more details:
+
+```
+$ apt-cache show libemail-outlook-message-perl
+```
+
+mail-parser supports Python 3.
+
+
+# Apache 2 Open Source License
+mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license.
+
+If you want support the project:
+
+
+[![Donate](https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif "Donate")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2)
+
+![Bitcoin Donate](https://i.stack.imgur.com/MnQ6V.png)
+
+![](https://github.com/SpamScope/mail-parser/raw/develop/docs/bitcoin-qrcode.png)
+
+
+# mail-parser on Web
+ - [Splunk app](https://splunkbase.splunk.com/app/4129/)
+ - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/)
+ - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/)
+
+
+# Description
+
+mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of
+[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml):
+
+ - bcc
+ - cc
+ - date
+ - delivered_to
+ - from\_ (not `from` because is a keyword of Python)
+ - message_id
+ - received
+ - reply_to
+ - subject
+ - to
+
+There are other properties to get:
+ - body
+ - body html
+ - body plain
+ - headers
+ - attachments
+ - sender IP address
+ - to domains
+ - timezone
+
+The `attachments` property is a list of objects. Every object has the following keys:
+ - binary: it's true if the attachment is a binary
+ - charset
+ - content_transfer_encoding
+ - content-disposition
+ - content-id
+ - filename
+ - mail_content_type
+ - payload: attachment payload in base64
+
+To get custom headers you should replace "-" with "\_".
+Example for header `X-MSMail-Priority`:
+
+```
+$ mail.X_MSMail_Priority
+```
+
+The `received` header is parsed and splitted in hop. The fields supported are:
+ - by
+ - date
+ - date_utc
+ - delay (between two hop)
+ - envelope_from
+ - envelope_sender
+ - for
+ - from
+ - hop
+ - with
+
+
+mail-parser can detect defect in mail:
+ - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part
+
+All properties have a JSON and raw property that you can get with:
+ - name_json
+ - name_raw
+
+Example:
+
+```
+$ mail.to (Python object)
+$ mail.to_json (JSON)
+$ mail.to_raw (raw header)
+```
+
+The command line tool use the JSON format.
+
+## Defects
+These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware).
+This library can take these epilogues.
+
+
+# Authors
+
+## Main Author
+**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/)
+
+
+# Installation
+
+Clone repository
+
+```
+git clone https://github.com/SpamScope/mail-parser.git
+```
+
+and install mail-parser with `setup.py`:
+
+```
+$ cd mail-parser
+
+$ python setup.py install
+```
+
+or use `pip`:
+
+```
+$ pip install mail-parser
+```
+
+# Usage in a project
+
+Import `mailparser` module:
+
+```
+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)
+```
+
+Then you can get all parts
+
+```
+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.text_not_managed: all not managed text (check the warning logs to find content subtype)
+mail.to
+mail.to_domains
+mail.timezone: returns the timezone, offset from UTC
+mail.mail_partial: returns only the mains parts of emails
+```
+
+It's possible to write the attachments on disk with the method:
+
+```
+mail.write_attachments(base_path)
+```
+
+# Usage from command-line
+
+If you installed mailparser with `pip` or `setup.py` you can use it with command-line.
+
+These are all swithes:
+
+```
+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.
+```
+
+Example:
+
+```shell
+$ mailparser -f example_mail -j
+```
+
+This example will show you the tokenized mail in a JSON pretty format.
+
+From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to
+[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6).
+
+
+# Exceptions
+
+Exceptions hierarchy of mail-parser:
+
+```
+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
+```
+
+
+
+
+%package -n python3-mail-parser
+Summary: Wrapper for email standard library
+Provides: python-mail-parser
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-mail-parser
+[![PyPI version](https://badge.fury.io/py/mail-parser.svg)](https://badge.fury.io/py/mail-parser)
+[![Build Status](https://travis-ci.org/SpamScope/mail-parser.svg?branch=develop)](https://travis-ci.org/SpamScope/mail-parser)
+[![Coverage Status](https://coveralls.io/repos/github/SpamScope/mail-parser/badge.svg?branch=develop)](https://coveralls.io/github/SpamScope/mail-parser?branch=develop)
+[![BCH compliance](https://bettercodehub.com/edge/badge/SpamScope/mail-parser?branch=develop)](https://bettercodehub.com/)
+[![](https://images.microbadger.com/badges/image/fmantuano/spamscope-mail-parser.svg)](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com")
+
+![SpamScope](https://raw.githubusercontent.com/SpamScope/spamscope/develop/docs/logo/spamscope.png)
+
+# mail-parser
+
+mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library.
+It give you an easy way to pass from raw mail to Python object that you can use in your code.
+It's the key module of [SpamScope](https://github.com/SpamScope/spamscope).
+
+mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems:
+
+```
+$ apt-get install libemail-outlook-message-perl
+```
+
+For more details:
+
+```
+$ apt-cache show libemail-outlook-message-perl
+```
+
+mail-parser supports Python 3.
+
+
+# Apache 2 Open Source License
+mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license.
+
+If you want support the project:
+
+
+[![Donate](https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif "Donate")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2)
+
+![Bitcoin Donate](https://i.stack.imgur.com/MnQ6V.png)
+
+![](https://github.com/SpamScope/mail-parser/raw/develop/docs/bitcoin-qrcode.png)
+
+
+# mail-parser on Web
+ - [Splunk app](https://splunkbase.splunk.com/app/4129/)
+ - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/)
+ - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/)
+
+
+# Description
+
+mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of
+[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml):
+
+ - bcc
+ - cc
+ - date
+ - delivered_to
+ - from\_ (not `from` because is a keyword of Python)
+ - message_id
+ - received
+ - reply_to
+ - subject
+ - to
+
+There are other properties to get:
+ - body
+ - body html
+ - body plain
+ - headers
+ - attachments
+ - sender IP address
+ - to domains
+ - timezone
+
+The `attachments` property is a list of objects. Every object has the following keys:
+ - binary: it's true if the attachment is a binary
+ - charset
+ - content_transfer_encoding
+ - content-disposition
+ - content-id
+ - filename
+ - mail_content_type
+ - payload: attachment payload in base64
+
+To get custom headers you should replace "-" with "\_".
+Example for header `X-MSMail-Priority`:
+
+```
+$ mail.X_MSMail_Priority
+```
+
+The `received` header is parsed and splitted in hop. The fields supported are:
+ - by
+ - date
+ - date_utc
+ - delay (between two hop)
+ - envelope_from
+ - envelope_sender
+ - for
+ - from
+ - hop
+ - with
+
+
+mail-parser can detect defect in mail:
+ - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part
+
+All properties have a JSON and raw property that you can get with:
+ - name_json
+ - name_raw
+
+Example:
+
+```
+$ mail.to (Python object)
+$ mail.to_json (JSON)
+$ mail.to_raw (raw header)
+```
+
+The command line tool use the JSON format.
+
+## Defects
+These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware).
+This library can take these epilogues.
+
+
+# Authors
+
+## Main Author
+**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/)
+
+
+# Installation
+
+Clone repository
+
+```
+git clone https://github.com/SpamScope/mail-parser.git
+```
+
+and install mail-parser with `setup.py`:
+
+```
+$ cd mail-parser
+
+$ python setup.py install
+```
+
+or use `pip`:
+
+```
+$ pip install mail-parser
+```
+
+# Usage in a project
+
+Import `mailparser` module:
+
+```
+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)
+```
+
+Then you can get all parts
+
+```
+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.text_not_managed: all not managed text (check the warning logs to find content subtype)
+mail.to
+mail.to_domains
+mail.timezone: returns the timezone, offset from UTC
+mail.mail_partial: returns only the mains parts of emails
+```
+
+It's possible to write the attachments on disk with the method:
+
+```
+mail.write_attachments(base_path)
+```
+
+# Usage from command-line
+
+If you installed mailparser with `pip` or `setup.py` you can use it with command-line.
+
+These are all swithes:
+
+```
+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.
+```
+
+Example:
+
+```shell
+$ mailparser -f example_mail -j
+```
+
+This example will show you the tokenized mail in a JSON pretty format.
+
+From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to
+[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6).
+
+
+# Exceptions
+
+Exceptions hierarchy of mail-parser:
+
+```
+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
+```
+
+
+
+
+%package help
+Summary: Development documents and examples for mail-parser
+Provides: python3-mail-parser-doc
+%description help
+[![PyPI version](https://badge.fury.io/py/mail-parser.svg)](https://badge.fury.io/py/mail-parser)
+[![Build Status](https://travis-ci.org/SpamScope/mail-parser.svg?branch=develop)](https://travis-ci.org/SpamScope/mail-parser)
+[![Coverage Status](https://coveralls.io/repos/github/SpamScope/mail-parser/badge.svg?branch=develop)](https://coveralls.io/github/SpamScope/mail-parser?branch=develop)
+[![BCH compliance](https://bettercodehub.com/edge/badge/SpamScope/mail-parser?branch=develop)](https://bettercodehub.com/)
+[![](https://images.microbadger.com/badges/image/fmantuano/spamscope-mail-parser.svg)](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com")
+
+![SpamScope](https://raw.githubusercontent.com/SpamScope/spamscope/develop/docs/logo/spamscope.png)
+
+# mail-parser
+
+mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library.
+It give you an easy way to pass from raw mail to Python object that you can use in your code.
+It's the key module of [SpamScope](https://github.com/SpamScope/spamscope).
+
+mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems:
+
+```
+$ apt-get install libemail-outlook-message-perl
+```
+
+For more details:
+
+```
+$ apt-cache show libemail-outlook-message-perl
+```
+
+mail-parser supports Python 3.
+
+
+# Apache 2 Open Source License
+mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license.
+
+If you want support the project:
+
+
+[![Donate](https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif "Donate")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2)
+
+![Bitcoin Donate](https://i.stack.imgur.com/MnQ6V.png)
+
+![](https://github.com/SpamScope/mail-parser/raw/develop/docs/bitcoin-qrcode.png)
+
+
+# mail-parser on Web
+ - [Splunk app](https://splunkbase.splunk.com/app/4129/)
+ - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/)
+ - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/)
+
+
+# Description
+
+mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of
+[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml):
+
+ - bcc
+ - cc
+ - date
+ - delivered_to
+ - from\_ (not `from` because is a keyword of Python)
+ - message_id
+ - received
+ - reply_to
+ - subject
+ - to
+
+There are other properties to get:
+ - body
+ - body html
+ - body plain
+ - headers
+ - attachments
+ - sender IP address
+ - to domains
+ - timezone
+
+The `attachments` property is a list of objects. Every object has the following keys:
+ - binary: it's true if the attachment is a binary
+ - charset
+ - content_transfer_encoding
+ - content-disposition
+ - content-id
+ - filename
+ - mail_content_type
+ - payload: attachment payload in base64
+
+To get custom headers you should replace "-" with "\_".
+Example for header `X-MSMail-Priority`:
+
+```
+$ mail.X_MSMail_Priority
+```
+
+The `received` header is parsed and splitted in hop. The fields supported are:
+ - by
+ - date
+ - date_utc
+ - delay (between two hop)
+ - envelope_from
+ - envelope_sender
+ - for
+ - from
+ - hop
+ - with
+
+
+mail-parser can detect defect in mail:
+ - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part
+
+All properties have a JSON and raw property that you can get with:
+ - name_json
+ - name_raw
+
+Example:
+
+```
+$ mail.to (Python object)
+$ mail.to_json (JSON)
+$ mail.to_raw (raw header)
+```
+
+The command line tool use the JSON format.
+
+## Defects
+These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware).
+This library can take these epilogues.
+
+
+# Authors
+
+## Main Author
+**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/)
+
+
+# Installation
+
+Clone repository
+
+```
+git clone https://github.com/SpamScope/mail-parser.git
+```
+
+and install mail-parser with `setup.py`:
+
+```
+$ cd mail-parser
+
+$ python setup.py install
+```
+
+or use `pip`:
+
+```
+$ pip install mail-parser
+```
+
+# Usage in a project
+
+Import `mailparser` module:
+
+```
+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)
+```
+
+Then you can get all parts
+
+```
+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.text_not_managed: all not managed text (check the warning logs to find content subtype)
+mail.to
+mail.to_domains
+mail.timezone: returns the timezone, offset from UTC
+mail.mail_partial: returns only the mains parts of emails
+```
+
+It's possible to write the attachments on disk with the method:
+
+```
+mail.write_attachments(base_path)
+```
+
+# Usage from command-line
+
+If you installed mailparser with `pip` or `setup.py` you can use it with command-line.
+
+These are all swithes:
+
+```
+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.
+```
+
+Example:
+
+```shell
+$ mailparser -f example_mail -j
+```
+
+This example will show you the tokenized mail in a JSON pretty format.
+
+From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to
+[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6).
+
+
+# Exceptions
+
+Exceptions hierarchy of mail-parser:
+
+```
+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
+```
+
+
+
+
+%prep
+%autosetup -n mail-parser-3.15.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-mail-parser -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 3.15.0-1
+- Package Spec generated