跳至内容

当我的 Amazon RDS for Microsoft SQL Server 实例位于公有或私有子网中时,如何使用 Amazon SES 发送电子邮件?

2 分钟阅读
0

我想使用 Amazon Simple Email Service (Amazon SES) 通过托管在私有或公有子网中的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 实例发送电子邮件。

解决方法

设置 Amazon SES

使用 Amazon SES 控制台获取简单邮件传输协议 (SMTP) 凭证

要接收确认电子邮件,请完成以下步骤:

  1. 打开 Amazon SES 控制台,然后选择 Email Addresses(电子邮件地址)。
  2. 选择 Verify a new email address(验证新的电子邮件地址),然后输入您希望接收确认电子邮件的电子邮件地址。
  3. 确认 Verification status(验证状态)为 verified(已验证)。

设置数据库邮件参数组

**注意:**如果您已有要用于数据库邮件的自定义参数组,请继续前往 Configure Database Mail(配置数据库邮件)部分。如果您的参数组已与 RDS for SQL Server 实例相关联,请继续执行本部分中的后续步骤。

要创建自定义参数组,请完成以下步骤:

  1. 打开 Aurora 和 RDS 控制台
  2. 选择 Parameter groups(参数组),然后选择 Create parameter group(创建参数组)。
  3. 对于 Parameter group family(参数组系列),选择您使用的 SQL Server 版本。例如,SQL Server 2016 企业版使用的是 sqlserver-ee-13.0
  4. 输入组名称和描述,然后选择 Create(创建)。
  5. Parameter groups(参数组)页面上,选择该组。
  6. 选择 Edit parameters(编辑参数),然后选择 database mail xps(数据库邮件 xps)。
  7. 对于 Values(值),选择 1
  8. 选择 Save(保存)。

要将参数组与您的 RDS for SQL Server 实例相关联,请完成以下步骤:

  1. 打开 Aurora 和 RDS 控制台
  2. 选择 Database(数据库),然后选择 Modify(修改)。
  3. Database options(数据库选项)下,选择参数组,然后选择 Continue(继续)。
  4. Scheduling of modifications(修改计划)下,选择 Immediately(立即)。
  5. 选择 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) 端点。

完成以下步骤:

  1. 识别实例的私有 IP 地址

  2. 创建新的安全组,其中包含与您的实例关联的安全组的入站规则:
    对于 Type(类型),选择 Custom TCP(自定义 TCP)。
    对于 Port range(端口范围),输入要用于发送电子邮件的端口号。您可以使用 25、465、587、2465 或 2587。
    对于 Source type(源类型),选择 Custom(自定义)。
    对于 Source(源),输入您的 RDS for SQL Server 实例的私有 IP 地址。

  3. 创建 VPC 端点

  4. 选择端点,然后记下 DNS 字段下的第一个名称。

  5. 重新创建数据库邮件账户:

    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 名称。

  6. 运行以下命令以确认数据库邮件配置正确:

    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';
    

    **注意:**如果数据库邮件配置正确,则会发送电子邮件。

  7. 运行以下存储过程以验证所有电子邮件项目:

    SELECT * FROM msdb.dbo.sysmail_allitems
    
  8. sent_status 列中,验证状态是否为 Sent(已发送)。

相关信息

管理 Amazon RDS Custom for SQL Server 数据库实例

在 Amazon RDS for SQL Server 上使用数据库邮件