我想使用 Amazon Simple Email Service (Amazon SES) 通过托管在私有或公有子网中的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 实例发送电子邮件。
解决方法
设置 Amazon SES
使用 Amazon SES 控制台获取简单邮件传输协议 (SMTP) 凭证。
要接收确认电子邮件,请完成以下步骤:
- 打开 Amazon SES 控制台,然后选择 Email Addresses(电子邮件地址)。
- 选择 Verify a new email address(验证新的电子邮件地址),然后输入您希望接收确认电子邮件的电子邮件地址。
- 确认 Verification status(验证状态)为 verified(已验证)。
设置数据库邮件参数组
**注意:**如果您已有要用于数据库邮件的自定义参数组,请继续前往 Configure Database Mail(配置数据库邮件)部分。如果您的参数组已与 RDS for SQL Server 实例相关联,请继续执行本部分中的后续步骤。
要创建自定义参数组,请完成以下步骤:
- 打开 Aurora 和 RDS 控制台。
- 选择 Parameter groups(参数组),然后选择 Create parameter group(创建参数组)。
- 对于 Parameter group family(参数组系列),选择您使用的 SQL Server 版本。例如,SQL Server 2016 企业版使用的是 sqlserver-ee-13.0。
- 输入组名称和描述,然后选择 Create(创建)。
- 在 Parameter groups(参数组)页面上,选择该组。
- 选择 Edit parameters(编辑参数),然后选择 database mail xps(数据库邮件 xps)。
- 对于 Values(值),选择 1。
- 选择 Save(保存)。
要将参数组与您的 RDS for SQL Server 实例相关联,请完成以下步骤:
- 打开 Aurora 和 RDS 控制台。
- 选择 Database(数据库),然后选择 Modify(修改)。
- 在 Database options(数据库选项)下,选择参数组,然后选择 Continue(继续)。
- 在 Scheduling of modifications(修改计划)下,选择 Immediately(立即)。
- 选择 Modify DB Instance(修改数据库实例)以应用更改,然后重启您的实例。
配置数据库邮件
如果您的 RDS for SQL Server 实例托管在公有子网中,则可以配置数据库邮件。
如果您的实例位于私有子网中,则在配置数据库邮件时可能会收到以下错误消息:
"The mail could not be sent to the recipients because of the mail server failure.Exception Message: Could not connect to mail server."
如果您收到上述错误消息,则您的数据库实例无法访问邮件服务器。要解决此问题,请为 Amazon SES 创建 Amazon Virtual Private Cloud (Amazon VPC) 端点。
完成以下步骤:
-
识别实例的私有 IP 地址。
-
创建新的安全组,其中包含与您的实例关联的安全组的入站规则:
对于 Type(类型),选择 Custom TCP(自定义 TCP)。
对于 Port range(端口范围),输入要用于发送电子邮件的端口号。您可以使用 25、465、587、2465 或 2587。
对于 Source type(源类型),选择 Custom(自定义)。
对于 Source(源),输入您的 RDS for SQL Server 实例的私有 IP 地址。
-
创建 VPC 端点。
-
选择端点,然后记下 DNS 字段下的第一个名称。
-
重新创建数据库邮件账户:
use msdbgo
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Acc1',
@description = 'Mail account for sending outgoing
notifications.',
@email_address = 'example@example.com',
@display_name = 'Automated Mailer',
@mailserver_name =
'vpce-0a9cxxxxxxxxxxxxx-xxxxxxxx.email-smtp.ap-southeast-2.vpce.amazonaws.com',
<---- VPC endpoint created in previous step
@port = 587,
@enable_ssl = 1,
@username = 'SMTP-username', <---- For user name and
password, please use the SES credentials
@password = 'SMTP-password' ;
**注意:**将 @mailserver_name 替换为您从 DNS 字段中记下的 DNS 名称。
-
运行以下命令以确认数据库邮件配置正确:
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'success@simulator.amazonses.com',@body = 'The database mail configuration was completed successfully.',
@subject = 'Automated Success Message';
**注意:**如果数据库邮件配置正确,则会发送电子邮件。
-
运行以下存储过程以验证所有电子邮件项目:
SELECT * FROM msdb.dbo.sysmail_allitems
-
在 sent_status 列中,验证状态是否为 Sent(已发送)。
相关信息
管理 Amazon RDS Custom for SQL Server 数据库实例
在 Amazon RDS for SQL Server 上使用数据库邮件