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

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

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

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

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

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

相關(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 ]

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

第一步:?jiǎn)⒂肧QL Server郵件功能

-- 啟用 sql server 郵件的功能

exec sp_configure 'show advanced options',1

go

reconfigure;

go

exec sp_configure 'Database Mail XPs',1

go

reconfigure;

go

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

-- 啟用 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é)果如圖所示

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

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

select * from sys.configurations

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

select name,value,description,

    is_dynamic,is_advanced

from sys.configurations

where name like '%mail%'

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

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

begin

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

end

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

    @account_name = 'test'   -- 郵件帳戶(hù)名稱(chēng)

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

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

    ,@replyto_address = null    -- 回復(fù)地址

    ,@description = null      -- 郵件賬戶(hù)描述

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

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

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

    ,@username = '656393951@qq.com'    -- 用戶(hù)名

    ,@password = 'xxxxxxxx'   -- 密碼

    ,@use_default_credentials = 0  -- 是否使用默認(rèn)憑證,0為否,1為是

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

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

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

第三步:添加配置文件相關(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'-- 配置文件名稱(chēng)

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

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

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

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

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

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

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

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)建一個(gè) insert 類(lèi)型的 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='注冊(cè)成功通知'
     set @content='歡迎您'+@UserNo+'!您已成功注冊(cè)!通知郵件,請(qǐng)勿回復(fù)!'
     exec msdb.dbo.sp_send_dbmail @profile_name='SendEmailProfile',  -- 郵件配置文件名稱(chēng)
                   @recipients=@mailUrl,    -- 郵件發(fā)送地址
                   @subject=@title,    -- 郵件標(biāo)題
                   @body=@content,  --郵件內(nèi)容
                   @body_format='text'  -- 郵件內(nèi)容的類(lèi)型,text 為文本,還可以設(shè)置為 html
    end
 go

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

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

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

use msdb

go

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

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

select * from sysmail_event_log      -- 數(shù)據(jù)庫(kù)郵件日志,可以用來(lái)查詢(xún)是否報(bào)錯(cuò)


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲国产精品一区二区三区 | 亚洲欧美日韩在线综合第一页 | 自拍自偷一区二区三区 | 日本野花视频在线看免费 | 亚洲日韩高清aⅴ在线观看 日韩中文精品在线专区 | 一本大道香蕉精品视频在线 |