SQL中利用脚本创建database mail

 

编写人:CC阿爸

 

2014-6-14

多话不讲,请参考以下脚本

 

use master

go

exec sp_configure 'show advanced options',1

go

reconfigure

go

exec sp_configure 'Database mail XPs',1

go

reconfigure

go

 

DECLARE @ProfileName VARCHAR(255)

DECLARE @AccountName VARCHAR(255)

SET @ProfileName = 'SystemMail';

SET @AccountName = 'SystemMail';

--Initial Cleanup:

 IF EXISTS(

 SELECT * FROM msdb.dbo.sysmail_profileaccount pa

       JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id

      JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id

 WHERE

       p.name = @ProfileName AND  a.name = @AccountName)

 

 BEGIN

      PRINT 'Deleting Profile Account'

      EXECUTE sysmail_delete_profileaccount_sp

      @profile_name = @ProfileName,

       @account_name = @AccountName

 END

 IF EXISTS(  SELECT * FROM msdb.dbo.sysmail_profile p  WHERE p.name = @ProfileName)

BEGIN

      PRINT 'Deleting Profile.'

      EXECUTE sysmail_delete_profile_sp

      @profile_name = @ProfileName

 END

IF EXISTS(  SELECT * FROM msdb.dbo.sysmail_account a  WHERE a.name = @AccountName)

 BEGIN

       PRINT 'Deleting Account.'

      EXECUTE sysmail_delete_account_sp

      @account_name = @AccountName

 END

exec msdb..sysmail_add_account_sp

        @account_name            = 'SystemMail'                 -- 邮件帐户名称(SQL Server 使用)

       ,@email_address           = 'potrontech@163.com'  -- 发件人邮件地址

       ,@display_name            = 'SystemMail'                      -- 发件人姓名

       ,@replyto_address         = 'potrontech@163.com'

       ,@description             = 'system alert'

       ,@mailserver_name         = 'smtp.163.com'           -- 邮件服务器地址

       ,@mailserver_type         = 'SMTP'                    -- 邮件协议(SQL 2005 只支持SMTP

       ,@port                    = 25                        -- 邮件服务器端口

       ,@username                = 'potrontech@163.com'  -- 用户名

       ,@password                = 'xxxxx'               -- 此处为邮件密码。暂以x代替

       ,@use_default_credentials = 0

       ,@enable_ssl              = 0

       ,@account_id              = null

 

exec msdb..sysmail_add_profile_sp @profile_name = 'SystemMail'      -- profile 名称

                                 ,@description  = 'system alert' -- profile 描述

                                 ,@profile_id   = null

 

exec msdb..sysmail_add_profileaccount_sp @profile_name    = 'SystemMail' -- profile 名称

                                         ,@account_name    = 'SystemMail'     -- account 名称

                                         ,@sequence_number = 1             -- account profile 中顺序

 

------test databasemail

----DECLARE @xml NVARCHAR(MAX)

----DECLARE @body NVARCHAR(MAX)

------SET @xml =CAST(( SELECT ID AS 'td','',UserID AS 'td' ,'',UserName AS 'td'  from ERV.dbo.CA  FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))

----SET @body ='<html><H1>Sales Reports</H1><body ><table border = 1><tr><td>ID</td><td>UserID</td><td>UserName</td></tr>'

----SET @body = @body + @xml +'</table></body></html>'

----

----

------test databasemail

----

----EXEC msdb.dbo.sp_send_dbmail

----@recipients=N'potrontech@163.com',

----@body= @body,

----@body_format ='HTML',

----@subject = 'Test Database Mail html',

----@profile_name = 'SystemMail'

----go

----use msdb

----

------要检查消息是否发送成功,我可以对sysmail_allitems系统视图执行一次查询。

--select * from sysmail_allitems

--select * from sysmail_mailitems

--select * from sysmail_event_log

 

--将一个配置文件设置为数据库的默认公共配置文件

 

 

exec msdb.dbo.sysmail_help_principalprofile_sp

EXECUTE msdb.dbo.sysmail_update_principalprofile_sp

    @principal_name = 'public',

    @profile_name = 'SystemMail',

    @is_default = '1';

 

有关更多的技术分享,大家可以加入我们的技术群。

 

欢迎加入技术分享群:238916811

 

 

 

 

posted on 2015-04-09 09:36  左丘文  阅读(432)  评论(0编辑  收藏  举报