

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon RDS for SQL Server 上使用 Database Mail
<a name="SQLServer.DBMail"></a>

您可以在 SQL Server 資料庫執行個體上使用 Database Mail，從您的 Amazon RDS 傳送電子郵件訊息給使用者。訊息可包含檔案和查詢結果。Database Mail 包含下列元件：
+ **設定和安全性物件** – 這些物件會建立設定檔和帳戶，並儲存在 `msdb` 資料庫中。
+ **傳訊物件** – 這些物件包括用來傳送訊息的 [sp\_send\_dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) 預存程序，以及保留訊息相關資訊的資料結構。這些物件會儲存在 `msdb` 資料庫中。
+ **記錄和稽核物件 ** – Database Mail會將記錄資訊寫入 `msdb` 資料庫和 Microsoft Windows 應用程式事件記錄檔。
+ **Database Mail可執行檔** – `DatabaseMail.exe` 會從 `msdb` 資料庫中的佇列讀取，並傳送電子郵件訊息。

RDS 支援 Web、標準和企業版上的所有 SQL Server 版本的 Database Mail。

## 限制
<a name="SQLServer.DBMail.Limitations"></a>

在 SQL Server 資料庫執行個體上使用 Database Mail 時將適用下列限制：
+ Database Mail 不支援 SQL Server Express 版本。
+ 不支援修改 Database Mail 組態參數。若要查看預先設定的值 (預設值)，請使用 [sysmail\_help\_configure\_sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql) 預存程序。
+ 不完全支援檔案附件。如需更多詳細資訊，請參閱 [使用檔案附件](#SQLServer.DBMail.Files)。
+ 檔案附件大小上限為 1 MB。
+ Database Mail 需要在多可用區域資料庫執行個體上設定其他組態。如需更多詳細資訊，請參閱 [異地同步備份部署的考量](#SQLServer.DBMail.MAZ)。
+ 不支援將 SQL Server 代理程式設定為傳送電子郵件訊息給預先定義的運算子。

## 適用於 Database Mail 的 Amazon RDS 預存程序和函數
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft 提供使用 Database Mail 的[預存程序](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql)，例如建立、列出、更新和刪除帳號和設定檔。此外，RDS 還提供適用於 Database Mail 的預存程序和函數，如下表所示。


| 程序/函數 | 描述 | 
| --- | --- | 
| rds\_fn\_sysmail\_allitems | 顯示已傳送的訊息，包括其他使用者提交的訊息。 | 
| rds\_fn\_sysmail\_event\_log | 顯示事件，包括其他使用者提交訊息的事件。 | 
| rds\_fn\_sysmail\_mailattachments | 顯示附件，包括其他使用者提交訊息的附件。 | 
| rds\_sysmail\_control | 啟動和停止郵件佇列 (DatabaseMail.exe 處理程序)。 | 
| rds\_sysmail\_delete\_mailitems\_sp | 從 Database Mail 內部表格刪除所有使用者傳送的電子郵件訊息。 | 

## 使用檔案附件
<a name="SQLServer.DBMail.Files"></a>

在 SQL Server 上，來自 RDS 的 Database Mail 訊息不支援下列檔案附件副檔名：.ade、.adp、.apk、.appx、.appxbundle、.bat、.bak、.cab、.chm、.cmd、.com、.cpl、.dll、.dmg、.exe、.hta、.inf1、.ins、.isp、.iso、.jar、.job、.js、.jse、.ldf、.lib、.lnk、.mde、.mdf、.msc、.msi、.msix、.msixbundle、.msp、.mst、.nsh、.pif、.ps、.ps1、.psc1、.reg、.rgs、.scr、.sct、.shb、.shs、.svg、.sys、.u3p、.vb、.vbe、.vbs、.vbscript、.vxd、.ws、.wsc、.wsf 和 .wsh。

Database Mail 會使用目前使用者的 Microsoft Windows 安全性內容來控制檔案的存取。使用 SQL Server 身分驗證登入的使用者無法使用 `@file_attachments` 預存程序的 `sp_send_dbmail` 參數附加檔案。Windows 不允許 SQL Server 將登入資料從遠端電腦提供給另一台遠端電腦。因此，從非執行 SQL Server 的電腦執行命令時，Database Mail 無法從網路共用附加檔案。

不過，您可以使用 SQL Server 代理程式任務來附加檔案。如需有關 SQL Server 代理程式的詳細資訊，請參閱 [使用 SQL Server Agent for Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) 和 Microsoft 文件中的 [SQL Server 代理程式](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent)。

## 異地同步備份部署的考量
<a name="SQLServer.DBMail.MAZ"></a>

當您在多可用區域資料庫執行個體上設定 Database Mail 時，組態不會自動傳播至次要可用區。建議將多可用區域執行個體轉換為單一可用區執行個體、設定 Database Mail，然後將資料庫執行個體轉換回多可用區域。然後，主節點和次要節點均設有 Database Mail 組態。

如果您從已設定 Database Mail 的多可用區域執行個體建立僅供讀取複本，則複本會繼承該組態，但不需要 SMTP 伺服器的密碼。使用密碼更新 Database Mail 帳戶。

## 移除 SMTP (連接埠 25) 限制
<a name="SQLServer.DBMail.SMTP"></a>

根據預設， 會 AWS 針對 RDS for SQL Server 資料庫執行個體封鎖 SMTP （連接埠 25) 上的傳出流量。這是為了根據彈性網路介面擁有者的政策防止垃圾郵件。如有需要，您可以移除此限制。如需詳細資訊，請參閱[如何從我的 Amazon EC2 執行個體或 Lambda 函數中移除連接埠 25 的限制？](https://repost.aws/knowledge-center/ec2-port-25-throttle)。