sysmail_add_account_sp (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
创建一个新的数据库邮件帐户,用于保存有关 SMTP 帐户的信息。
语法
sysmail_add_account_sp [ @account_name = ] 'account_name' ,
[ @email_address = ] 'email_address' ,
[ [ @display_name = ] 'display_name' , ]
[ [ @replyto_address = ] 'replyto_address' , ]
[ [ @description = ] 'description' , ]
[ @mailserver_name = ] 'server_name'
[ , [ @mailserver_type = ] 'server_type' ]
[ , [ @port = ] port_number ]
[ , [ @username = ] 'username' ]
[ , [ @password = ] 'password' ]
[ , [ @use_default_credentials = ] use_default_credentials ]
[ , [ @enable_ssl = ] enable_ssl ]
[ , [ @account_id = ] account_id OUTPUT ]
[ ; ]
参数
[ @account_name = ] 'account_name'
要添加的帐户的名称。 @account_name 为 sysname,没有默认值。
[ @email_address = ] 'email_address'
要从中发送邮件的电子邮件地址。 该地址必须是 Internet 电子邮件地址。 @email_address为 nvarchar(128),没有默认值。 例如,SQL Server 代理帐户可能从地址SqlAgent@adventure-works.com
发送电子邮件。
[ @display_name = ] 'display_name'
在从该帐户发出的电子邮件中使用的显示名称。 @display_name为 nvarchar(128),默认值为 NULL
. 例如,SQL Server 代理的帐户可能会在电子邮件上显示名称SQL Server Agent Automated Mailer
。
[ @replyto_address = ] 'replyto_address'
对于来自此帐户的邮件发送答复的地址。 @replyto_address 为 nvarchar(128),默认值为 NULL
. 例如,回复SQL Server 代理的帐户可能会转到数据库管理员danw@adventure-works.com
。
[ @description = ] 'description'
帐户的说明。 @description为 nvarchar(256),默认值为 NULL
.
[ @mailserver_name = ] 'server_name'
此帐户所用 SMTP 邮件服务器的名称或 IP 地址。 运行 SQL Server 的计算机必须能够将 @mailserver_name 解析为 IP 地址。 @mailserver_name为 sysname,无默认值。
[ @mailserver_type = ] 'server_type'
电子邮件服务器的类型。 @mailserver_type为 sysname,默认值为 SMTP
.
[ @port = ] port_number
电子邮件服务器的端口号。 @port为 int,默认值为 25
.
[ @username = ] 'username'
用于登录到电子邮件服务器的用户名。 @username 为 nvarchar(128),默认值为 NULL
. 如果此参数为NULL
此参数,数据库邮件不会对此帐户使用身份验证。 如果邮件服务器不需要身份验证,则用于 NULL
用户名。
[ @password = ] 'password'
用于登录电子邮件服务器的密码。 @password为 nvarchar(128),默认值为 NULL
. 除非指定用户名,否则无需提供密码。
[ @use_default_credentials = ] use_default_credentials
指定是否使用 SQL Server 数据库引擎的凭据将邮件发送到 SMTP 服务器。 @use_default_credentials为位,默认值为 0
. 当此参数为1
此参数时,数据库邮件使用数据库引擎的凭据。 如果此参数为0
此参数,则数据库邮件如果存在,则发送@username和@password参数,否则发送不带@username和@password参数的邮件。
[ @enable_ssl = ] enable_ssl
指定数据库邮件是否使用安全套接字层对通信进行加密。 @enable_ssl为位,默认值为 0
.
[ @account_id = ] account_id OUTPUT
返回新帐户的帐户 ID。 @account_id为 int,默认值为 NULL
.
返回代码值
0
(成功)或 1
(失败)。
注解
数据库邮件为@email_address、@display_name和@replyto_address提供单独的参数。 @email_address参数是发送消息的地址。 @display_name参数是电子邮件字段中显示From:
的名称。 @replyto_address参数是将发送电子邮件答复的地址。 例如,用于SQL Server 代理的帐户可能会从仅用于SQL Server 代理的电子邮件地址发送电子邮件。 来自该地址的邮件应显示一个友好名称,以便收件人可以轻松确定SQL Server 代理发送邮件。 如果收件人回复邮件,回复应转到数据库管理员,而不是SQL Server 代理使用的地址。 对于此方案,帐户用作 SqlAgent@adventure-works.com
电子邮件地址。 显示名称设置为 SQL Server Agent Automated Mailer
。 该帐户用作danw@adventure-works.com
地址答复,因此从此帐户发送的邮件的答复将转到数据库管理员,而不是SQL Server 代理的电子邮件地址。 通过为上述三个参数提供独立的设置,数据库邮件允许您配置邮件来适应您的需求。
@mailserver_type参数支持值SMTP
。
当@use_default_credentials1
时,将使用 SQL Server 数据库引擎的凭据将邮件发送到 SMTP 服务器。 当@use_default_credentials为0
帐户指定@username和@password时,该帐户使用 SMTP 身份验证。 @username和@password是帐户用于 SMTP 服务器的凭据,而不是 SQL Server 的凭据或计算机位于的网络。
存储过程 sysmail_add_account_sp
位于 msdb
数据库中,由 dbo
架构拥有。 如果当前数据库不是 msdb
,则必须使用三部分名称执行该过程。
权限
此存储过程由 db_owner 角色拥有。 你可以为任何用户授予 EXECUTE
权限,但这些权限可能会在 SQL Server 升级期间被重写。
示例
以下示例将创建一个名为 AdventureWorks Administrator
的帐户。 此帐户使用电子邮件地址 dba@adventure-works.com
,并将邮件发送到 SMTP 邮件服务器 smtp.adventure-works.com
。 从此帐户发送的电子邮件显示在 AdventureWorks Automated Mailer
邮件行上 From:
。 对此邮件的回复将发往 danw@adventure-works.com
。
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'AdventureWorks Administrator',
@description = 'Mail account for administrative e-mail.',
@email_address = 'dba@adventure-works.com',
@display_name = 'AdventureWorks Automated Mailer',
@mailserver_name = 'smtp.adventure-works.com';