LocalStack扩展:MailHog
项目描述
LocalStack Mailhog扩展
使用MailHog在LocalStack中直接进行基于Web和API的SMTP测试。
如果使用标准配置,LocalStack将通过http://mailhog.localhost.localstack.cloud:4566或http://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 中看到邮件到达。
配置
您可以使用 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"])
许可
- MailHog 没有修改,其许可协议为 MIT 许可:https://github.com/mailhog/MailHog/blob/master/LICENSE.md
- 扩展代码的许可协议为 Apache 许可协议第 2 版
项目详情
哈希值 for localstack_extension_mailhog-0.2.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e3445f89f10f4c623c053e206855213b7d1623a51cb2dbc6653687baabb87e0 |
|
MD5 | 0d6e4b7f115bde034470b5e2f5209cfc |
|
BLAKE2b-256 | 722b184e4d04412f4373577a94ddaa2e278c2fd7fcbc8ac2a83a2b4cfa30a357 |