基于mailtrap和maildump的邮件测试api的smtp服务器

lathermail的Python项目详细描述


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

Lathermal

mailtrapmaildump

可以将消息存储在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_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/<;消息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)
  • 修复多部分二进制消息

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

推荐PyPI第三方库


热门话题
java检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异