跳转到主要内容

SMTP服务器,具有基于mailtrap和maildump的API,用于邮件测试

项目描述

https://travis-ci.org/reclosedev/lathermail.svg?branch=master https://coveralls.io/repos/reclosedev/lathermail/badge.svg?branch=master&service=github

lathermail

SMTP服务器,具有基于mailtrapmaildump的API,用于邮件测试

可以将消息存储在MongoDB或任何由SQLAlchemy支持的数据库中(例如,sqlite)。支持Python 2.7,3.4,3.5,pypy。

包含简单的用户界面(AngularJS)来导航和管理收到的消息。

可用的API客户端

用法

$ 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_containsrecipients.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)

  • 修复多部分二进制消息

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

lathermail-0.4.2.tar.gz (21.9 kB 查看散列)

上传时间

构建分布

lathermail-0.4.2-py2.py3-none-any.whl (25.0 kB 查看散列)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面