SMTP服务器,具有基于mailtrap和maildump的API,用于邮件测试
项目描述
lathermail
SMTP服务器,具有基于mailtrap和maildump的API,用于邮件测试
可以将消息存储在MongoDB或任何由SQLAlchemy支持的数据库中(例如,sqlite)。支持Python 2.7,3.4,3.5,pypy。
包含简单的用户界面(AngularJS)来导航和管理收到的消息。
可用的API客户端
Python API客户端 lathermail_client (PyPI)。
用法
$ 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:///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)
收件箱由SMTP用户/密码对识别。lathermail旨在在单个项目环境中使用。
要发送电子邮件,只需使用具有身份验证支持的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/<message_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/<message_id>/attachments/<attachment_index>
从消息中返回文件。在浏览器中工作。
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/<message_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)
修复多部分二进制消息
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。