亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 01:04:50
字體:
來源:轉載
供稿:網友

sql 使用系統存儲過程 sp_send_dbmail 發送電子郵件語法:

sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...n ]' ] [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ] [ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ] [ , [ @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 ] [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

參數參考地址:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql

下面開始配置 sql 發送電子郵件:

步驟一:

-- 啟用 sql server 郵件的功能exec sp_configure 'show advanced options',1goreconfigure;goexec sp_configure 'Database Mail XPs',1goreconfigure;go

如果上面的語句執行失敗,也可以使用下面的語句。

-- 啟用 sql server 郵件的功能exec sp_configure 'show advanced options', 1goreconfigure with overridegoexec sp_configure 'Database Mail XPs', 1goreconfigure with overridego

使用下面的語句查看數據庫郵件功能是否開啟成功和數據庫配置信息:

-- 查詢數據庫的配置信息select * from sys.configurations-- 查看數據庫郵件功能是否開啟,value 值為1表示已開啟,0為未開啟select name,value,description,    is_dynamic,is_advancedfrom sys.configurationswhere name like '%mail%'

步驟二:

if exists(SELECT * FROM msdb..sysmail_account WHERE NAME='test') --判斷郵件賬戶名為 test 的賬戶是否存在begin  EXEC msdb..sysmail_delete_account_sp @account_name='test' -- 刪除郵件賬戶名為 test 的賬戶endexec msdb..sysmail_add_account_sp  --創建郵件賬戶    @account_name = 'test'   -- 郵件帳戶名稱    ,@email_address = '980095349@qq.com'   -- 發件人郵件地址     ,@display_name = 'Brambling'    -- 發件人姓名     ,@replyto_address = null    -- 回復地址    ,@description = null      -- 郵件賬戶描述    ,@mailserver_name = 'smtp.qq.com'  -- 郵件服務器地址     ,@mailserver_type = 'SMTP'    -- 郵件協議    ,@port = 25         -- 郵件服務器端口     ,@username = '980095349@qq.com'    -- 用戶名     ,@password = 'xxxxxx'   -- 密碼     ,@use_default_credentials = 0  -- 是否使用默認憑證,0為否,1為是    ,@enable_ssl = 1    -- 是否啟用 ssl 加密,0為否,1為是    ,@account_id = null -- 輸出參數,返回創建的郵件賬戶的ID

PS:如果使用的是QQ郵箱,記得要把參數 @enable_ssl 的值設置為 1 。不然后面會報服務器錯誤,這個錯誤搞了我好久,最后終于找到原因了。

步驟三:

if exists(SELECT * FROM msdb..sysmail_profile where NAME = N'SendEmailProfile') --判斷名為 SendEmailProfile 的郵件配置文件是否存在begin   exec msdb..sysmail_delete_profile_sp @profile_name = 'SendEmailProfile' --刪除名為 SendEmailProfile 的郵件配置文件endexec msdb..sysmail_add_profile_sp  -- 添加郵件配置文件   @profile_name = 'SendEmailProfile',  -- 配置文件名稱     @description = '數據庫發送郵件配置文件',  -- 配置文件描述      @profile_id = NULL    -- 輸出參數,返回創建的郵件配置文件的ID

步驟四:

-- 郵件賬戶和郵件配置文件相關聯 exec msdb..sysmail_add_profileaccount_sp     @profile_name = 'SendEmailProfile',  -- 郵件配置文件名稱      @account_name = 'test',  -- 郵件賬戶名稱       @sequence_number = 1  -- account 在 profile 中的順序,一個配置文件可以有多個不同的郵件賬戶

好了,到這里 sql 發送郵件的配置就基本結束了。下面創建一個觸發器實現用戶注冊成功后,發送郵件給用戶。

首先創建一個表:

-- 創建一個表 create table T_User (   UserID    int    not null  identity(1,1) primary key,   UserNo    nvarchar(64)  not null unique,   UserPwd    nvarchar(128) not null ,   UserMail  nvarchar(128)  null ) go

然后創建一個 insert 類型的 after 觸發器:

 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() 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,    -- 郵件發送地址                   @subject=@title,    -- 郵件標題                   @body=@content,  --郵件內容                   @body_format='text'  -- 郵件內容的類型,text 為文本,還可以設置為 html    end go

下面就來測試一下吧:

 -- 新添加一條數據,用以觸發 insert 觸發器 insert into T_User(UserNo,UserPwd,UserMail) values('demo1','123456','1171588826@qq.com')

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

use msdbgoselect * from sysmail_allitems    -- 郵件發送情況,可以用來查看郵件是否發送成功select * from sysmail_mailitems    -- 發送郵件的記錄select * from sysmail_event_log      -- 數據庫郵件日志,可以用來查詢是否報錯
use msdb go--為角色名為 dba 的角色賦予發送數據庫郵件的權限create user dba for login dba  go exec dbo.sp_addrolemember @rolename  = 'DatabaseMailUserRole',              @membername = 'dba' go use msdb go   --為角色名為 dba 的角色賦予配置文件發送郵件的權限exec sysmail_add_principalprofile_sp @principal_name = 'dba',    -- 角色名稱                   @profile_name = 'SendEmailProfile', -- 配置文件名稱                   @is_default = 1  -- 對于角色所擁有的配置文件的順序,一個數據庫角色可以有多個配置文件的權限

如果所使用的登陸數據庫會話的角色沒有發送數據庫郵件的權限,那么也會報錯。所以上面是賦予角色發送數據庫郵件的權限 sql 語句。

以上所述是小編給大家介紹的SQL Server 使用觸發器(trigger)發送電子郵件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩大片在线观看视频| 欧美第一黄色网| www.久久草.com| 国产成人97精品免费看片| 亚洲视频在线免费看| 一级做a爰片久久毛片美女图片| 久久久久久久97| 亚洲一区精品电影| 国产一区二区三区毛片| 色噜噜狠狠色综合网图区| 欧美一级bbbbb性bbbb喷潮片| 日韩成人在线播放| 欧洲精品在线视频| 国产精品视频yy9099| 久久亚洲综合国产精品99麻豆精品福利| 欧美性xxxx在线播放| 国产精品视频网址| 精品视频www| 国产成人综合精品| 日韩成人在线播放| 欧美做受高潮1| 成人激情视频网| 中文字幕亚洲欧美日韩高清| 91久久久久久久一区二区| 亚洲天堂男人天堂女人天堂| 精品国内产的精品视频在线观看| 欧美激情免费观看| 日韩在线观看你懂的| 日韩精品在线免费播放| 午夜精品一区二区三区在线视| 国产视频福利一区| 欧美孕妇与黑人孕交| 欧美特级www| 欧美午夜性色大片在线观看| 欧美大尺度电影在线观看| 亚洲91精品在线| 亚洲aⅴ日韩av电影在线观看| 久久黄色av网站| 日韩美女福利视频| 国产一区欧美二区三区| 日日噜噜噜夜夜爽亚洲精品| 欧美午夜精品久久久久久人妖| 日本欧美国产在线| 欧美日韩亚洲高清| 国产在线视频不卡| 热门国产精品亚洲第一区在线| 欧美激情在线观看| 主播福利视频一区| 国产精品美女久久久久久免费| 97婷婷涩涩精品一区| 欧美一级淫片丝袜脚交| 性欧美激情精品| 欧美夫妻性视频| 国产精品人成电影在线观看| 欧美成aaa人片免费看| 国产亚洲美女久久| 成人精品一区二区三区| 夜夜嗨av色一区二区不卡| 97免费视频在线| 亚洲中国色老太| 日韩av中文字幕在线| 国产精品视频久久久久| 国产欧美一区二区白浆黑人| 亚洲а∨天堂久久精品喷水| 2018国产精品视频| 91久久久亚洲精品| 欧美一区二粉嫩精品国产一线天| 欧美日韩在线观看视频| 亚洲欧美日韩精品| 国产精品成人观看视频国产奇米| 久久这里只有精品视频首页| 精品亚洲一区二区三区在线观看| 97精品国产97久久久久久免费| 91精品国产九九九久久久亚洲| 91亚洲国产成人久久精品网站| 久久69精品久久久久久国产越南| 成人黄色片在线| 欧美小视频在线观看| 久久人人爽亚洲精品天堂| 亚洲激情视频网| 91精品国产91久久久久久不卡| 韩国三级电影久久久久久| 美女视频黄免费的亚洲男人天堂| 精品亚洲精品福利线在观看| 国产一区二区三区在线观看网站| 亚洲天堂一区二区三区| 国产不卡一区二区在线播放| 国产成人精品久久二区二区| 欧美日韩另类字幕中文| 国产精品丝袜白浆摸在线| 国产成人久久精品| 亚洲欧美激情另类校园| 亚洲最大av网站| 欧美日韩中文字幕| 国产香蕉一区二区三区在线视频| 色琪琪综合男人的天堂aⅴ视频| 国产精品一久久香蕉国产线看观看| 国产精品扒开腿做爽爽爽男男| 久久久久久久一区二区三区| 亚洲一级黄色av| 国产999精品| 亚洲午夜色婷婷在线| 日韩欧美一区二区在线| 欧美性猛交99久久久久99按摩| 91色琪琪电影亚洲精品久久| 亚洲激情视频网站| 在线播放亚洲激情| 日韩av中文字幕在线免费观看| 日韩中文字幕免费视频| 久久久久这里只有精品| 欧美激情精品久久久久久久变态| 国产日韩av在线播放| 久久精品一本久久99精品| 91在线观看免费高清完整版在线观看| 国产精品久久久久影院日本| 国产精品免费网站| 欧美激情视频一区| 久久夜色精品国产欧美乱| 亚洲成人精品在线| 日韩欧美中文字幕在线观看| 国内精品国产三级国产在线专| 久久久久久亚洲精品| 国产精品爽黄69天堂a| 这里只有精品丝袜| 91亚洲精华国产精华| 欧美另类在线播放| 久久综合伊人77777蜜臀| 欧美专区在线播放| 午夜精品福利电影| 92国产精品视频| 亚洲精品日韩欧美| 疯狂做受xxxx欧美肥白少妇| 久久久久国色av免费观看性色| 精品二区三区线观看| 色777狠狠综合秋免鲁丝| 精品调教chinesegay| www.色综合| 91亚洲精品久久久| 国产免费一区二区三区在线观看| 中文字幕国产亚洲| 国产午夜精品理论片a级探花| 欧美日韩国产中文精品字幕自在自线| 欧美一二三视频| 一区二区三区四区精品| 日韩免费视频在线观看| 亚洲老板91色精品久久| 国产一区二区在线免费| 成人性生交大片免费观看嘿嘿视频| 色综合久久悠悠| 亚洲精品自拍视频| 亚洲天堂免费在线| 亚洲香蕉av在线一区二区三区| 亚洲一级一级97网| 日韩精品在线观看一区| 亚洲午夜精品久久久久久性色| 欧美老女人性生活| 国产精品v日韩精品| 欧美肥臀大乳一区二区免费视频| 久久91超碰青草是什么| 亚洲精品国产suv| 国模精品一区二区三区色天香| 亚洲国产精品一区二区久| 国产日韩综合一区二区性色av| 久久久久久亚洲精品中文字幕|