跳转到主要内容

LocalStack扩展:MailHog

项目描述

LocalStack Mailhog扩展

Install LocalStack Extension

使用MailHog在LocalStack中直接进行基于Web和API的SMTP测试。

如果使用标准配置,LocalStack将通过http://mailhog.localhost.localstack.cloud:4566http://localhost:4566/mailhog/提供UI服务。它还将自动配置SMTP_HOST,指向所有使用SMTP的服务,包括SES,指向MailHog。

安装

通过我们的扩展管理器在https://app.localstack.cloud安装扩展,或通过CLI安装

localstack extensions install localstack-extension-mailhog

启动LocalStack后,您应该在日志中看到这些行

2023-07-26T10:00:08.072  INFO --- [  MainThread] mailhog.extension          : serving mailhog extension on host: http://mailhog.localhost.localstack.cloud:4566
2023-07-26T10:00:08.072  INFO --- [  MainThread] mailhog.extension          : serving mailhog extension on path: http://localhost:4566/mailhog/

从GitHub存储库安装

或者,您可以通过运行以下命令直接从GitHub存储库安装最新未发布版本

localstack extensions install "git+https://github.com/localstack/localstack-extensions/#egg=localstack-mailhog-extension&subdirectory=mailhog"

与LocalStack集成

当使用此扩展时,LocalStack 会自动配置为在发送电子邮件时使用 MailHog SMTP 服务器。例如,如果您运行以下 SES 命令

$ awslocal ses verify-email-identity --email-address user1@yourdomain.com
$ awslocal ses send-email \                                              
    --from user1@yourdomain.com \
    --message 'Body={Text={Data="Hello from LocalStack to MailHog"}},Subject={Data=Test Email}' \
    --destination 'ToAddresses=recipient1@example.com'
{
    "MessageId": "ktrmpmhohorxfbjd-dzebwdgu-odnm-wyvz-pezg-mijejwlvaxtr-psfctr"
}

您应该在 MailHog 中看到邮件到达。 Screenshot at 2023-07-26 12-08-54

配置

您可以使用 MailHog 配置环境变量 来配置扩展。当使用 CLI 时,您可以通过使用 DOCKER_FLAGS='-e MH_<var>=<val> -e ...' 来添加它们。如果您正在使用 docker compose,只需将它们作为环境变量添加到容器中。

开发

安装本地开发版本

要将扩展安装到 LocalStack 中并开启开发者模式,您需要 Python 3.10,并在扩展项目中创建一个虚拟环境。

在新生成的项目中,只需运行

make install

然后,要为 LocalStack 启用扩展,运行

localstack extensions dev enable .

您可以使用 EXTENSION_DEV_MODE=1 启动 LocalStack 以加载所有启用的扩展

EXTENSION_DEV_MODE=1 localstack start

已知限制

MailHog UI 通过 WebSocket 支持实时更新,但目前默认的 :4566 端口不支持。当您打开 UI 时,您可能在 LocalStack 日志中看到此错误,可以安全忽略。但是 UI 不会自动更新,因此您需要点击刷新按钮。

2023-07-25T18:23:12.465 ERROR --- [-functhread3] hypercorn.error            : Error in ASGI Framework
Traceback (most recent call last):
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/asyncio/task_group.py", line 23, in _handle
await app(scope, receive, send, sync_spawn, call_soon)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/app_wrappers.py", line 33, in __call__
await self.app(scope, receive, send)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/localstack/aws/serving/asgi.py", line 67, in __call__
return await self.wsgi(scope, receive, send)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/localstack/http/asgi.py", line 324, in __call__
raise NotImplementedError("Unhandled protocol %s" % scope["type"])
NotImplementedError: Unhandled protocol websocket
2023-07-25T18:23:12.465 ERROR --- [-functhread3] hypercorn.error            : Error in ASGI Framework
Traceback (most recent call last):
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/asyncio/task_group.py", line 23, in _handle
await app(scope, receive, send, sync_spawn, call_soon)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/app_wrappers.py", line 33, in __call__
await self.app(scope, receive, send)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/localstack/aws/serving/asgi.py", line 67, in __call__
return await self.wsgi(scope, receive, send)
File "/opt/code/localstack/.venv/lib/python3.10/site-packages/localstack/http/asgi.py", line 324, in __call__
raise NotImplementedError("Unhandled protocol %s" % scope["type"])

许可

项目详情


下载文件

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

源分发

localstack_extension_mailhog-0.2.0.tar.gz (7.0 kB 查看哈希值)

上传时间

构建分发

localstack_extension_mailhog-0.2.0-py3-none-any.whl (7.9 kB 查看哈希值)

上传时间 Python 3

支持者

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