用途
该技能用于在 .NET API 项目中实现通过 AWS SES(Amazon Simple Email Service)发送邮件。它遵循 Clean Architecture 分层,将邮件能力抽象为应用层接口,并在基础设施层提供 AWS SES 的具体实现,适合需要以模板化方式发送事务性邮件的后端应用。
主要能力
- AWS SES 集成:使用 Amazon.SimpleEmailV2 客户端发送邮件,支持显式凭证(开发/预发)或 IAM 角色/环境凭证(生产)。
- HTML 模板:从文件加载 HTML 模板,使用 {{key}} 语法进行占位符替换。
- Result 模式:接口返回 Result<T>,不抛出异常,便于统一错误处理。
- 启用/禁用开关:通过配置项 Enabled 控制,开发模式下仅记录日志而不实际发送。
- 错误定义:提供 SendFailed、TemplateNotFound、InvalidRecipient、EmailDisabled 等预定义错误。
使用方式
- 在应用层定义 IEmailService 接口,包含 SendTemplatedEmailAsync(模板邮件)与 SendHtmlEmailAsync(原始 HTML 邮件)两个方法。
- 在基础设施层实现 AwsSesEmailService,构造时根据配置初始化 SES v2 客户端,并将模板路径设置为应用基目录下的相对路径。
- 通过 EmailOptions 配置 AWS 区域、访问密钥、发件地址、发件人名称、启用开关和模板目录,并在 appsettings.json 的 Email 节中填写。
- 在依赖注入中调用 services.Configure<EmailOptions> 并注册 IEmailService 到 AwsSesEmailService。
- 将 HTML 模板文件放入 Api/EmailTemplates 目录,文件名不带扩展名传入 templateName 参数。
适用场景
资料中给出的模板示例包括预约提醒、检测结果就绪、欢迎邮件、处方就绪、密码重置等,示例配置使用医疗健康类域名与 HIPAA 提示,表明其适用于需要发送事务性通知邮件的 .NET 后端服务。
限制
资料未提供关于收费、价格、性能指标或平台兼容性范围的信息。模板占位符替换为简单的字符串替换,未说明是否支持条件、循环等复杂模板逻辑。