LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件步驟詳解

admin
2024年3月30日 16:35 本文熱度 1425

本文將分步驟給大家詳細介紹下SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件的方法,需要的朋友可以參考下,記得收藏,點贊!

使用系統(tǒng)存儲過程 sp_send_dbmail 向指定的收件人發(fā)送電子郵件。消息可能包括查詢結(jié)果集、文件附件或兩者。當郵件成功放入數(shù)據(jù)庫郵件隊列時,sp_send_dbmail 將返回郵件的mailitem_id。此存儲過程位于msdb數(shù)據(jù)庫中。

使用系統(tǒng)存儲過程 sp_send_dbmail 發(fā)送電子郵件語法如下:

相關(guān)參數(shù)參考鏈接地址:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql

sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]

      [ , [ @recipients = ] 'recipients [ ; ...n ]' ]

      [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]

      [ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]

      [ , [ @from_address = ] 'from_address' ]

      [ , [ @reply_to = ] 'reply_to' ]

      [ , [ @subject = ] 'subject' ]

      [ , [ @body = ] 'body' ]

      [ , [ @body_format = ] 'body_format' ]

      [ , [ @importance = ] 'importance' ]      [ , [ @sensitivity = ] 'sensitivity' ]

      [ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]

      [ , [ @query = ] 'query' ]

      [ , [ @execute_query_database = ] 'execute_query_database' ]

      [ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]

      [ , [ @query_attachment_filename = ] query_attachment_filename ]

      [ , [ @query_result_header = ] query_result_header ]

      [ , [ @query_result_width = ] query_result_width ]

      [ , [ @query_result_separator = ] 'query_result_separator' ]

      [ , [ @exclude_query_output = ] exclude_query_output ]

      [ , [ @append_query_error = ] append_query_error ]

      [ , [ @query_no_truncate = ] query_no_truncate ]

      [ , [ @query_result_no_padding = ] @query_result_no_padding ]

      [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

下面開始配置如何使用 sql 發(fā)送電子郵件:

第一步:啟用SQL Server郵件功能

-- 啟用 sql server 郵件的功能

exec sp_configure 'show advanced options',1

go

reconfigure;

go

exec sp_configure 'Database Mail XPs',1

go

reconfigure;

go

如果上面的語句執(zhí)行失敗,也可以使用下面的語句,自行選擇。

-- 啟用 sql server 郵件的功能

exec sp_configure 'show advanced options', 1

go

reconfigure with override

go

exec sp_configure 'Database Mail XPs', 1

go

reconfigure with override

go

執(zhí)行結(jié)果如圖所示

使用下面的語句可查看數(shù)據(jù)庫郵件功能是否開啟成功和數(shù)據(jù)庫相關(guān)配置信息:

-- 查詢數(shù)據(jù)庫的配置信息

select * from sys.configurations

-- 查看數(shù)據(jù)庫郵件功能是否開啟,value 值為1表示已開啟,0為未開啟

select name,value,description,

    is_dynamic,is_advanced

from sys.configurations

where name like '%mail%'

第二步:設(shè)置相關(guān)郵件賬戶信息參數(shù)

if exists(SELECT * FROM msdb..sysmail_account WHERE NAME='test') --判斷郵件賬戶名為 test 的賬戶是否存在

begin

  EXEC msdb..sysmail_delete_account_sp @account_name='test' -- 刪除郵件賬戶名為 test 的賬戶

end

exec msdb..sysmail_add_account_sp  --創(chuàng)建郵件賬戶

    @account_name = 'test'   -- 郵件帳戶名稱

,@email_address = '656393951@qq.com'   -- 發(fā)件人郵件地址

,@display_name = 'SQLMinutes'    -- 發(fā)件人姓名

    ,@replyto_address = null    -- 回復地址

    ,@description = null      -- 郵件賬戶描述

    ,@mailserver_name = 'smtp.qq.com'  -- 郵件服務(wù)器地址

    ,@mailserver_type = 'SMTP'    -- 郵件協(xié)議

    ,@port = 465         -- 郵件服務(wù)器端口

    ,@username = '656393951@qq.com'    -- 用戶名

    ,@password = 'xxxxxxxx'   -- 密碼

    ,@use_default_credentials = 0  -- 是否使用默認憑證,0為否,1為是

    ,@enable_ssl = 1    -- 是否啟用 ssl 加密,0為否,1為是

    ,@account_id = null -- 輸出參數(shù),返回創(chuàng)建的郵件賬戶的ID

注意:如果使用的是QQ郵箱,記得要把參數(shù) @enable_ssl 的值設(shè)置為 1 。不然后面會報服務(wù)器錯誤(前人經(jīng)驗之談)。

第三步:添加配置文件相關(guān)信息

if exists(SELECT * FROM msdb..sysmail_profile where NAME = N'SendEmailProfile') --判斷名為 SendEmailProfile 的郵件配置文件是否存在

begin

   exec msdb..sysmail_delete_profile_sp @profile_name = 'SendEmailProfile' --刪除名為 SendEmailProfile 的郵件配置文件

end

exec msdb..sysmail_add_profile_sp  -- 添加郵件配置文件

   @profile_name = 'SendEmailProfile'-- 配置文件名稱

   @description = '數(shù)據(jù)庫發(fā)送郵件配置文件'-- 配置文件描述

   @profile_id = NULL    -- 輸出參數(shù),返回創(chuàng)建的郵件配置文件的IDD

第四步:郵件賬戶和郵件配置文件相關(guān)聯(lián)

-- 郵件賬戶和郵件配置文件相關(guān)聯(lián)
 exec msdb..sysmail_add_profileaccount_sp
     @profile_name = 'SendEmailProfile',  -- 郵件配置文件名稱
     @account_name = 'test',  -- 郵件賬戶名稱
     @sequence_number = 1  -- account 在 profile 中的順序,一個配置文件可以有多個不同的郵件賬戶
配置到現(xiàn)在 sql 發(fā)送郵件的配置就基本結(jié)束了。

下面做個測試,測試郵件是否可以發(fā)送成功,創(chuàng)建一個觸發(fā)器實現(xiàn)用戶注冊成功后,發(fā)送郵件給用戶。

第一步:創(chuàng)建一個表

-- 創(chuàng)建一個表

create table T_User

(

   UserID    int    not null  identity(1,1) primary key,

   UserNo    nvarchar(64not null unique,

   UserPwd    nvarchar(128) not null ,

   UserMail  nvarchar(128null

 )

 go

第二步:創(chuàng)建一個 insert 類型的 after 觸發(fā)器

create trigger NewUser_Send_Mail
 on T_User
 after insert as
   declare @UserNo  nvarchar(64)
   declare @title  nvarchar(64)
   declare @content nvarchar(320)
   declare @mailUrl nvarchar(128)
   declare @count  int
   select @count=COUNT(1) from inserted
   select @UserNo=UserNo,@mailUrl=UserMail from inserted
   if(@count>0)
   begin
     set @title='注冊成功通知'
     set @content='歡迎您'+@UserNo+'!您已成功注冊!通知郵件,請勿回復!'
     exec msdb.dbo.sp_send_dbmail @profile_name='SendEmailProfile',  -- 郵件配置文件名稱
                   @recipients=@mailUrl,    -- 郵件發(fā)送地址
                   @subject=@title,    -- 郵件標題
                   @body=@content,  --郵件內(nèi)容
                   @body_format='text'  -- 郵件內(nèi)容的類型,text 為文本,還可以設(shè)置為 html
    end
 go

第三步:插入測試數(shù)據(jù),進行測試

-- 新添加一條數(shù)據(jù),用以觸發(fā) insert 觸發(fā)器
insert into T_User(UserNo,UserPwd,UserMail) values('demo1','123','1261881008@qq.com')

執(zhí)行上面的語句之后,大概兩三秒鐘,就會收到郵件了(如果沒有出現(xiàn)錯誤的話)。如果沒有收到郵件可以使用下面的語句查看郵件發(fā)送情況。

use msdb

go

select * from sysmail_allitems    -- 郵件發(fā)送情況,可以用來查看郵件是否發(fā)送成功

select * from sysmail_mailitems    -- 發(fā)送郵件的記錄

select * from sysmail_event_log      -- 數(shù)據(jù)庫郵件日志,可以用來查詢是否報錯


該文章在 2024/3/30 16:35:16 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
伊人久久综合狼伊人久久 | 欧美精品在线观看 | 色综合中文字幕色综合激情 | 人人做人人爱在碰一区三区 | 欧洲一区二区免费视频在线观看网站 | 在线精品精品第一区二区三区 |