尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

邮件与通知自动化:erlcloud SES/SNS 集成实战指南

邮件与通知自动化:erlcloud SES/SNS 集成实战指南 邮件与通知自动化erlcloud SES/SNS 集成实战指南【免费下载链接】erlcloudAWS APIs library for Erlang (Amazon EC2, S3, SQS, DDB, ELB and etc)项目地址: https://gitcode.com/gh_mirrors/er/erlcloud在 Erlang 生态中如何快速实现邮件发送与消息通知自动化答案就是erlcloud——一个功能全面的 AWS API 客户端库覆盖 Amazon EC2、S3、SQS、SES、SNS 等核心服务。本文将带你从零开始掌握用 erlcloud 调用 SES 发送邮件、用 SNS 实现实时通知推送的完整实战流程即便你是 Erlang 新手也能跟着步骤轻松上手。erlcloud 是什么Erlang 开发者为何需要它erlcloud 是 GitHub 上非常活跃的 Erlang AWS 库以纯 Erlang 实现无需额外依赖重型 SDK。它的设计非常 Erlang 化函数命名直观、返回结构清晰并且每个模块都自带详尽的文档注释和可执行示例学习成本极低。覆盖广SES邮件、SNS通知、S3存储、SQS队列、DDB数据库等数十个 AWS 服务。易配置一行configure/2即可完成全局凭证配置也支持通过new/2创建独立配置。风格统一所有请求返回{ok, Result} | {error, Reason}错误处理非常顺手。核心源码都集中在项目的 src 目录例如邮件相关的 erlcloud_ses.erl 与通知相关的 erlcloud_sns.erl。快速开始5 分钟完成环境配置首先把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/er/erlcloud然后用 rebar3 或 make 编译并在你的应用中引入依赖即可。接下来配置 AWS 凭证两种方式任选其一方式一全局配置推荐新手erlcloud_ses:configure(AKIA...你的AccessKey, 你的SecretKey). erlcloud_sns:configure(AKIA...你的AccessKey, 你的SecretKey).方式二独立配置多账户场景Config erlcloud_ses:new(AccessKey, SecretKey), erlcloud_ses:send_email(Dest, Body, Subject, Source, [], Config).配置完成后就能开始调用 SES 和 SNS 了。用 erlcloud SES 发送邮件的完整步骤SESSimple Email Service是 AWS 的邮件发送服务erlcloud 对它的封装非常完善。完整函数列表可参考 erlcloud_ses.erl。第一步验证发件邮箱或域名在沙箱模式下SES 只允许向已验证身份发信所以第一步是验证身份%% 验证单个邮箱 erlcloud_ses:verify_email_identity(adminexample.com). %% 查看验证状态 erlcloud_ses:get_identity_verification_attributes([adminexample.com]).验证通过后状态为success即可正常发信。第二步发送纯文本与 HTML 邮件send_email/4是最常用的接口支持同时携带纯文本和 HTML 两种正文客户端会自动选择{ok, [{message_id, MsgId}]} erlcloud_ses:send_email( [{to_addresses, [userexample.com]}, {cc_addresses, [ccexample.com]}], [{html, [{charset, UTF-8}, {data, h1你好/h1}]}, {text, [{charset, UTF-8}, {data, 你好这是纯文本正文。}]}], [{charset, UTF-8}, {data, 测试邮件主题}], adminexample.com ).返回值中的MsgId是 AWS 生成的唯一消息 ID可用于后续追踪。该接口的详细参数说明见 erlcloud_ses.erl。第三步发送带附件的原始邮件如果需要发送附件或自定义 MIME 结构使用send_raw_email/1直接传递完整的 MIME 报文Raw From: adminexample.com\nTo: userexample.com\nSubject: 带附件\n MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary\NextPart\\n\n --NextPart\nContent-Type: text/plain\n\n邮件正文\n\n --NextPart\nContent-Type: application/pdf; name\report.pdf\\n Content-Transfer-Encoding: base64\n\n...base64内容...\n--NextPart--, {ok, [{message_id, MsgId}]} erlcloud_ses:send_raw_email(Raw).参考实现见 erlcloud_ses.erl。第四步查看发送配额与统计生产环境务必关注发送配额避免触发限流%% 查询配额每日发送上限、每秒速率等 erlcloud_ses:get_send_quota(). %% 查询发送统计 erlcloud_ses:get_send_statistics().用 erlcloud SNS 实现实时消息通知SNSSimple Notification Service是 AWS 的发布/订阅消息服务。erlcloud 对它的封装见 erlcloud_sns.erl支持邮件、HTTP、短信、移动推送等多种订阅协议。创建主题并订阅邮箱%% 创建主题返回 TopicArn TopicArn erlcloud_sns:create_topic(order-events). %% 订阅新订单通知发到运维邮箱 SubArn erlcloud_sns:subscribe(opsexample.com, email, TopicArn).注意邮箱订阅需要收件人点击确认邮件中的链接后才能生效SubArn处于pending confirmation状态时无法接收消息。发布消息到主题订阅确认完成后一条publish_to_topic即可把消息推送给所有订阅者MessageId erlcloud_sns:publish_to_topic(TopicArn, 新订单 #10086 已创建).函数定义见 erlcloud_sns.erl。除了发布到主题还可以用publish_to_target/2直接推送给某个终端或用publish_to_phone/2发送短信。在 Erlang 应用中解析 SNS 回调当 SNS 向你的 HTTP 端点推送通知时erlcloud 提供了现成的解析工具极大简化了回调处理%% 在 HTTP 回调中解析 SNS 事件 Event erlcloud_sns:parse_event(Body), case erlcloud_sns:get_event_type(Event) of subscription_confirmation - %% 首次订阅确认需调用 confirm_subscription 完成确认 erlcloud_sns:confirm_subscription(SubscriptionArn); notification - %% 解析真正的消息内容 Notification erlcloud_sns:parse_event_message(Event), handle_order_event(Notification) end.相关解析函数见 erlcloud_sns.erl这一套工具让 Erlang 服务对接 SNS 推送变得异常简单。SES SNS 联动构建完整的邮件通知闭环两者结合最经典的场景是回弹与投诉监控。当 SES 发出的邮件被退回bounce或用户投诉complaint时AWS 会自动向 SNS 主题推送事件你的 Erlang 服务解析后即可自动处理形成自动化闭环SES 发送邮件 ↓ SES 产生 Bounce/Complaint/Delivery 事件 ↓ 事件推送到 SNS 主题 ↓ Erlang 服务收到 HTTP 推送解析并处理在 SES 中为身份配置通知主题可使用%% 将 bounce 事件推送到指定 SNS 主题 erlcloud_ses:set_identity_notification_topic(example.com, bounce, TopicArn).对应的 API 封装见 erlcloud_ses.erl。这样邮件系统的投递状态就完全纳入了你的自动化监控体系。常见问题与排查技巧验证邮件一直收不到检查邮箱是否在 SES 沙箱白名单中以及是否点击了确认链接。发送被拒绝MessageRejected通常是发件人未验证或超出配额用get_send_quota/0排查。SNS 订阅收不到消息确认订阅状态为Confirmed可通过list_subscriptions_by_topic/1查看。回调解析失败用parse_event/1配合get_event_type/1先判断事件类型再解析消息体。写在最后通过本文你应该已经掌握了用erlcloud完成SES 邮件发送与SNS 消息通知自动化的核心套路配置凭证 → 验证身份 → 发送消息 → 处理回调。这套能力足以支撑注册验证、告警通知、订单提醒等绝大多数业务场景。下一步不妨深入阅读 erlcloud_ses.erl 与 erlcloud_sns.erl 的完整文档注释那里还有更多惊喜等着你【免费下载链接】erlcloudAWS APIs library for Erlang (Amazon EC2, S3, SQS, DDB, ELB and etc)项目地址: https://gitcode.com/gh_mirrors/er/erlcloud创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表