狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

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

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

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

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

相關參數參考鏈接地址: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 發送電子郵件:

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

-- 啟用 sql server 郵件的功能

exec sp_configure 'show advanced options',1

go

reconfigure;

go

exec sp_configure 'Database Mail XPs',1

go

reconfigure;

go

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

-- 啟用 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

執行結果如圖所示

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

-- 查詢數據庫的配置信息

select * from sys.configurations

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

select name,value,description,

    is_dynamic,is_advanced

from sys.configurations

where 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 的賬戶

end

exec msdb..sysmail_add_account_sp  --創建郵件賬戶

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

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

,@display_name = 'SQLMinutes'    -- 發件人姓名

    ,@replyto_address = null    -- 回復地址

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

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

    ,@mailserver_type = 'SMTP'    -- 郵件協議

    ,@port = 465         -- 郵件服務器端口

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

    ,@password = 'xxxxxxxx'   -- 密碼

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

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

    ,@account_id = null -- 輸出參數,返回創建的郵件賬戶的ID

注意:如果使用的是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 的郵件配置文件

end

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

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

   @description = '數據庫發送郵件配置文件'-- 配置文件描述

   @profile_id = NULL    -- 輸出參數,返回創建的郵件配置文件的IDD

第四步:郵件賬戶和郵件配置文件相關聯

-- 郵件賬戶和郵件配置文件相關聯
 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(64not null unique,

   UserPwd    nvarchar(128) not null ,

   UserMail  nvarchar(128null

 )

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

第三步:插入測試數據,進行測試

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

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

use msdb

go

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

select * from sysmail_mailitems    -- 發送郵件的記錄

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


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