SQLSERVER-邮件功能Mail

一、启用Database Mail XPs功能。

查看Database Mail XPs功能是否打开,从返回结果来看,value为0说明没有打开,注意SQL Mail XPs是SQL Server早期版本提供的发送邮件功能,而现在用的是Database Mail XPs来实现发送邮件。

select name,
       value,
       description,
       is_dynamic,
       is_advanced
from sys.configurations
where name like '%mail%'
启动Database Mail XPs功能:
sp_configure 'show advanced options',1
go
reconfigure
go


sp_configure 'Database Mail XPs',1
go
reconfigure
go
二、配置数据库邮件

1、点开管理目录,右键“数据库邮件”,选择“配置数据库邮件”选项:



 


2、弹出“数据库邮件配置向导”,单击下一步:



 3、选择“通过执行以下任务来安装数据库邮件”选项,单击下一步:



4、输入“配置文件名”,这里我输入的是:db_mail,然后单击右侧的“添加”按钮:


 5、输入账户名、说明,按照你的实际情况,输入:电子邮件地址、服务器名称,用户名和密码,必须要输入正确,否则就不能正确发送邮件。


比如我的邮箱地址是:xbase100@163.com,用户名和密码,就是登陆这个邮箱的用户名和密码,服务器名称是:smtp.163.com



 6、填写完成后,单击下一步:



7、在“公共”选项打上勾,单击下一步:


8、可以修改“配置系统参数”,比如账户重试次数,禁止的附件文件扩展名,单击下一步:


 9、单击完成按钮。



 10、显示配置成功。



三、发送邮件 
DECLARE @email_conetent VARCHAR(8000);    --存放邮件正文

--计算有多少条记录 
SELECT  @email_conetent = '你的数据库,共有:'+ cast(COUNT(*) as varchar)  + '个表!'  
FROM sys.tables;   
 

--发送邮件  
EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'db_mail',         --配置文件名称
    @recipients = 'abc@163.com',  --收件email地址
    @subject = '你好',                 --邮件主题
    @body = @email_conetent            --邮件正文内容
    
四、查看数据库邮件日志

右键“数据库邮件”,选择“查看数据库邮件日志”:


 


五、登陆邮箱验证邮件是否发送成功
打开邮件,看到的邮件内容:


代码方式配置:

--
1. 启用 SQL Server 邮件功能。 use master go exec sp_configure 'show advanced options',1 go reconfigure go exec sp_configure 'Database mail XPs',1 go reconfigure go --2. 在 SQL Server 2005 中添加邮件帐户(account) exec msdb..sysmail_add_account_sp @account_name = 'oliver' -- 邮件帐户名称(SQL Server 使用) ,@email_address = '506259995@qq.com' -- 发件人邮件地址 ,@display_name = null -- 发件人姓名 ,@replyto_address = null ,@description = null ,@mailserver_name = 'smtp.qq.com' -- 邮件服务器地址 ,@mailserver_type = 'SMTP' -- 邮件协议(SQL 2005 只支持 SMTP) ,@port = 25 -- 邮件服务器端口 ,@username = '506259995@qq.com' -- 用户名 ,@password = '**********' -- 密码 ,@use_default_credentials = 0 ,@enable_ssl = 0 ,@account_id = null --3. 在 SQL Server 2005 中添加 profile exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile' -- profile 名称 ,@description = 'dba mail profile' -- profile 描述 ,@profile_id = null --4. 在 SQL Server 2005 中映射 account 和 profile exec msdb..sysmail_add_profileaccount_sp @profile_name = 'dba_profile' -- profile 名称 ,@account_name = 'oliver' -- account 名称 ,@sequence_number = 1 -- account 在 profile 中顺序 --5. 利用 SQL Server 2005 Database Mail 功能发送邮件。 exec msdb..sp_send_dbmail @profile_name = 'dba_profile' -- profile 名称 ,@recipients = 'oliverary@qq.com' -- 收件人邮箱 ,@subject = 'SQL Server Mail 测试' -- 邮件标题 ,@body = 'Hello Mail!测试' -- 邮件内容 ,@body_format = 'TEXT' -- 邮件格式 --6. 查看邮件发送情况: use msdb go select * from sysmail_allitems select * from sysmail_mailitems select * from sysmail_event_log 例: if object_id(N'tgr_new_order') is not null drop trigger tgr_new_order go create trigger tgr_new_order on ordermst FOR INSERT AS DECLARE @sysno varchar(30), @pno varchar(30), @Content varchar(200) select @sysno=sysno,@pno=pinsideno From inserted set @Content='You Have A New Order,Order No:'+@pno+',Please' exec msdb..sp_send_dbmail @profile_name = 'dba_profile' -- profile 名称 ,@recipients = 'oliverary@qq.com' -- 收件人邮箱 ,@subject = 'You Have A New Order' -- 邮件标题 ,@body = @Content -- 邮件内容 ,@body_format = 'TEXT' -- 邮件格式

 

posted @ 2014-04-27 23:15  oliverary  阅读(635)  评论(0)    收藏  举报