基于mailtrap和maildump的邮件测试api的smtp服务器
lathermail的Python项目详细描述
Lathermal
可以将消息存储在MongoDB或任何支持SqlAlchemy的数据库(例如,Sqlite)中。支持python 2.7、3.4、3.5、pypy。
包含简单的ui接口(angularjs),用于导航和管理接收到的消息。
用法:
$ virtualenv venv # or mkvirutalenv lathermail $ . venv/bin/activate $ pip install lathermail $ lathermail --help usage: lathermail [-h] [--db-uri DB_URI] [--api-host API_HOST] [--api-port API_PORT] [--smtp-host SMTP_HOST] [--smtp-port SMTP_PORT] optional arguments: -h, --help show this help message and exit --db-uri DB_URI DB URI, e.g. mongodb://localhost/lathermail, sqlite:////tmp/my.db (default: sqlite:///~/.lathermail.db) --api-host API_HOST API Host (default: 127.0.0.1) --api-port API_PORT API port (default: 5000) --smtp-host SMTP_HOST SMTP host (default: 127.0.0.1) --smtp-port SMTP_PORT SMTP port (default: 2525)
它将在单个进程中启动SMTP服务器和API服务器。 此外,在api端口(默认情况下为http://127.0.0.1:5000)也提供ui接口
收件箱由SMTP用户/密码对标识。拟用于单个项目环境中的Lathermal。
要发送电子邮件,只需使用带有身份验证支持的SMTP客户端。
api
若要请求API,必须提供标题:
- X-Mail-Password-与smtp密码相同
- X-Mail-Inbox-与smtp用户相同。可选,如果未指定,则使用所有收件箱
get/api/0/inboxes/
返回通过的X-Mail-Password:
的收件箱列表{ "inbox_list": [ "first", "second", "third" ], "inbox_count": 3 }
get/api/0/messages/<;消息id>;
返回单个消息。示例:
{ "message_info": { "message_raw": "Content-Type: multipart/mixed; boundary=\"===============3928630509694630745==...", "password": "password", "sender": { "name": "Me", "address": "asdf@exmapl.com" }, "recipients": [ { "name": "Rcpt1", "address": "rcpt1@example.com" }, { "name": "Rcpt2", "address": "rcpt2@example.com" }, { "name": "", "address": "rcpt3@example.com" } ], "recipients_raw": "=?utf-8?q?Rcpt1?= <rcpt1@example.com>,\n =?utf-8?q?Rcpt2?= <rcpt2@example.com>, rcpt3@example.com", "created_at": "2014-06-24T15:28:35.045000+00:00", "sender_raw": "Me <asdf@exmapl.com>", "parts": [ { "index": 0, "body": "you you \u043f\u0440\u0438\u0432\u0435\u0442 2", "is_attachment": false, "charset": "utf-8", "filename": null, "type": "text/plain", "size": 16 }, { "index": 1, "body": null, "is_attachment": true, "charset": null, "filename": "t\u0430\u0441\u0434est.txt", "type": "application/octet-stream", "size": 12 } ], "inbox": "inbox", "_id": "53a960e3312f9156b7c92c5b", "subject": "Test subject \u0445\u044d\u043b\u043b\u043e\u0443 2", "read": false } }
邮件中的附件有body=null。要下载文件,请使用以下方法。
get/api/0/messages/<;邮件id>;/附件/<;附件索引>;
从消息返回文件。在浏览器中工作。
get/api/0/messages/
根据可选筛选器返回消息:
- sender.name-发件人姓名
- sender.address-发件人的电子邮件
- recipients.name-任何收件人的名称
- recipients.address-任何收件人的电子邮件
- subject-消息主题
- 将_contains后缀添加到上面的任何字段以搜索子字符串匹配, 例如:subject_contains,recipients.address_contains
- created_at_lt-筛选在此ISO格式日期时间之前创建的消息
- created_at_gt-筛选在此ISO格式日期时间之后创建的消息
- read-仅在
True
时返回已读邮件,或在False
时返回未读邮件。默认情况下返回的所有电子邮件
示例:
{ "message_count": 3, "message_list": [ {"_id": ..., "parts": [...], ...}, // same as single message {...}, {...} ] }
delete/api/0/messages/<;消息id>;
删除单个消息
delete/api/0/messages/
删除收件箱中的所有邮件。此外,您还可以过滤可删除的消息,如get/api/0/
配置
复制lathermail.conf.example,修改它,启动前导出环境变量:
$ export LATHERMAIL_SETTINGS=/path/to/lathermail.conf $ lathermail
运行测试:
$ python -m tests
变更日志
0.4.1(2017-02-06)
- [UI]添加按钮可删除单个或所有消息
0.4.0(2017-02-06)
- 添加_contains筛选器
- 使用简单文本格式的电子邮件修复错误
0.3.1(2016-09-02)
- python 2上message_from_string的正确修复
0.3.0(2016-09-01)
- HTML多部分支持(2,3)
- 修复多部分二进制消息