标签:
019_邮件
--配置邮件发送环境****************************************************************************************
--默认情况下,数据库邮件处于不活动状态。显式启用数据库邮件的方法:
sp_configure ‘show advanced options‘, 1;
RECONFIGURE;
GO
sp_configure ‘Database Mail XPs‘, 1;
RECONFIGURE
GO
--创建account【账户】
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = ‘TEST_Public_Account‘, --要创建的账户名
@description = ‘Mail account for administrative e-mail.‘, --账户的可选说明
@email_address = ‘841059921@qq.com‘, --发件人邮件地址
--@port=465,--qq SMTP服务器(端口465或587)
@display_name = ‘TEST_sqlmail‘, --要在发送的电子邮件上显示的显示名称。
@mailserver_name = ‘smtp.qq.com‘, --SMTP 服务器名称。
@username=‘841059921@qq.com‘, --用户名
@password=‘webtest‘ --密码
--创建profile【配置文件】
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = ‘TEST_Public_Profile‘,--要在配置文件中添加的帐户的名称
@description = ‘Profile used for administrative mail.‘ ;
--关联account 和 profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = ‘TEST_Public_Profile‘,--要在其中添加帐户的配置文件的名称
@account_name = ‘TEST_Public_Account‘,--要在配置文件中添加的帐户的名称
@sequence_number =1 ;--配置文件中的帐户的序列号
--向数据库用户或角色【public】授予使用数据库邮件配置文件的权限。同时将这个配置文件设置为默认的配置文件。
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = ‘TEST_Public_Profile‘,
@principal_name = ‘public‘,--关联的 msdb 数据库中数据库用户或角色的名称
@is_default = 1 ;--指定配置文件是否为主体数据库的默认配置文件
--测试
exec msdb..sp_send_dbmail
@profile_name = ‘TEST_Public_Profile‘,--profile名称
@recipients = ‘841059921@qq.com‘,--收件人邮箱(有多个邮箱用分号分开)
@importance =‘High‘, --重要程度为高
@subject = ‘SQL Server 2005 Mail 测试‘,--邮件标题
@body = ‘Hello Mail!测试**********************************1‘,--邮件内容
@query = ‘SELECT * FROM TEST..aaa‘ ,--附件内容由语句生成
@copy_recipients =‘li_wenzhi@founder.com;841059921@qq.com‘,--抄送邮件地址
@attach_query_result_as_file = 1,--为1为附件,为0为邮件正文
@query_attachment_filename =‘Results.txt‘,--@query生成的文件名称
@file_attachments =‘f://aaa2.xls‘,--将本地文件【f://aaa2.xls】附加到邮件中
@exclude_query_output =1;--为0时,消息中显示【邮件已排队。】;为1时,消息中显示【命令已成功完成。】
--删除邮件配置环境****************************************************************************************
-- 从邮件配置文件中删除数据库邮件帐号
EXEC msdb.dbo.sysmail_delete_profileaccount_sp
@profile_name = TEST_Public_Profile,
@account_name = TEST_Public_Account;
-- 删除数据库邮件帐号
EXEC msdb.dbo.sysmail_delete_account_sp
@account_name = TEST_Public_Account;
-- 删除数据库邮件配置文件
EXEC msdb.dbo.sysmail_delete_profile_sp
@profile_name = TEST_Public_Profile;
-- 禁用数据库邮件功能
EXEC sys.sp_configure ‘Database Mail XPs‘, 0;
RECONFIGURE;
go
EXEC sys.sp_configure N‘show advanced options‘, 0
RECONFIGURE;
go
--1.数据库邮件的设计基于使用 Service Broker 技术的排队体系结构。当用户执行 sp_send_dbmail 时,存储过程将向邮件队列中插入一项,并创建一条包含该电子邮件信息的记录。在邮件队列中插入新项将启动数据库邮件外部进程 (DatabaseMail.exe)。该外部进程会读取电子邮件的信息并将电子邮件发送到相应的一台或多台电子邮件服务器。该外部进程还会在状态队列中插入一项,来指示发送操作的结果。在状态队列中插入新项将启动内部存储过程,该过程将更新电子邮件信息的状态。除存储已发送(或未发送)的电子邮件信息外,数据库邮件还在系统表中记录所有电子邮件的附件。数据库邮件视图提供了供排除故障使用的邮件状态,使用存储过程可以对数据库邮件队列进行管理。
--2.只有 msdb 数据库中的 DatabaseMailUserRole 的成员可以执行 sp_send_dbmail
--3.msdb 数据库是数据库邮件主机数据库。此数据库包含数据库邮件的存储过程和消息处理对象。
--4.一个用户可以使用多个配置文件,但只可以将一个配置文件定义为默认配置文件。每个配置文件都可以使用多个帐户。一个帐户可以由多个配置文件使用
--5.配置文件绑定了【服务器角色(一个)】和【发信账号(可为多个)】
--6.发信时,使用默认配置文件中 序列号 为1的帐户来发送邮件,若发送错误且默认配置文件不止一个账户时,使用序列号 为2的帐户来发送邮件,并以此递推。
--7.查询邮件发送情况
select * from msdb..sysmail_allitems
select * from msdb..sysmail_mailitems
select * from msdb..sysmail_event_log
标签:
原文地址:http://www.cnblogs.com/heibaitan/p/4285039.html