sysmail_add_account_sp (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

创建一个新的数据库邮件帐户,用于保存有关 SMTP 帐户的信息。

Transact-SQL 语法约定

语法

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_namesysname,没有默认值。

[ @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_addressnvarchar(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'

用于登录到电子邮件服务器的用户名。 @usernamenvarchar(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_credentials0帐户指定@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';