Rumah pangkalan data tutorial mysql 分享SQL Server 使用触发器(trigger)发送电子邮件实例代码

分享SQL Server 使用触发器(trigger)发送电子邮件实例代码

Apr 26, 2017 pm 01:58 PM

本文分步骤给大家详细介绍了SQL Server 使用触发器(trigger)发送电子邮件的方法,需要的朋友可以参考下

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 ]
Salin selepas log masuk

下面开始配置 sql 发送电子邮件:

步骤一:

-- 启用 sql server 邮件的功能
exec sp_configure 'show advanced options',1
go
reconfigure;
go
exec sp_configure 'Database Mail XPs',1
go
reconfigure;
go
Salin selepas log masuk

如果上面的语句执行失败,也可以使用下面的语句。

-- 启用 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
Salin selepas log masuk

使用下面的语句查看数据库邮件功能是否开启成功和数据库配置信息:

-- 查询数据库的配置信息
select * from sys.configurations
-- 查看数据库邮件功能是否开启,value 值为1表示已开启,0为未开启
select name,value,description,
    is_dynamic,is_advanced
from sys.configurations
where name like '%mail%'
Salin selepas log masuk

步骤二:

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 = '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
Salin selepas log masuk

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 的邮件配置文件
end
exec msdb..sysmail_add_profile_sp  -- 添加邮件配置文件
   @profile_name = 'SendEmailProfile',  -- 配置文件名称  
   @description = '数据库发送邮件配置文件',  -- 配置文件描述   
   @profile_id = NULL    -- 输出参数,返回创建的邮件配置文件的ID
Salin selepas log masuk

步骤四:

-- 邮件账户和邮件配置文件相关联 
exec msdb..sysmail_add_profileaccount_sp  
   @profile_name = 'SendEmailProfile',  -- 邮件配置文件名称   
   @account_name = 'test',  -- 邮件账户名称    
   @sequence_number = 1  -- account 在 profile 中的顺序,一个配置文件可以有多个不同的邮件账户
Salin selepas log masuk

好了,到这里 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
Salin selepas log masuk

然后创建一个 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
Salin selepas log masuk

下面就来测试一下吧:

 -- 新添加一条数据,用以触发 insert 触发器
 insert into T_User(UserNo,UserPwd,UserMail) values('demo1','123456','1171588826@qq.com')
Salin selepas log masuk

执行上面的语句之后,大概两三秒钟,就会收到邮件了(如果没有出现错误的话)。如果没有收到邮件可以使用下面的语句查看邮件发送情况。

use msdb
go
select * from sysmail_allitems    -- 邮件发送情况,可以用来查看邮件是否发送成功
select * from sysmail_mailitems    -- 发送邮件的记录
select * from sysmail_event_log      -- 数据库邮件日志,可以用来查询是否报错
Salin selepas log masuk
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  -- 对于角色所拥有的配置文件的顺序,一个数据库角色可以有多个配置文件的权限
Salin selepas log masuk

如果所使用的登陆数据库会话的角色没有发送数据库邮件的权限,那么也会报错。所以上面是赋予角色发送数据库邮件的权限 sql 语句。

Atas ialah kandungan terperinci 分享SQL Server 使用触发器(trigger)发送电子邮件实例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perisian pelayan microsoft sql? Apakah perisian pelayan microsoft sql? Feb 28, 2023 pm 03:00 PM

Microsoft SQL Server ialah sistem pengurusan pangkalan data relasi yang dilancarkan oleh Microsoft Ia adalah platform pangkalan data yang komprehensif yang menggunakan alat perisikan perniagaan (BI) bersepadu untuk menyediakan pengurusan data peringkat perusahaan tahap integrasi dengan perisian yang berkaitan Kelebihan tinggi. Enjin pangkalan data SQL Server menyediakan fungsi storan yang lebih selamat dan boleh dipercayai untuk data hubungan dan data berstruktur, membolehkan pengguna membina dan mengurus aplikasi data yang tersedia dan berprestasi tinggi untuk perniagaan.

Pelayan SQL atau MySQL? Penyelidikan baharu mendedahkan pilihan pangkalan data terbaik. Pelayan SQL atau MySQL? Penyelidikan baharu mendedahkan pilihan pangkalan data terbaik. Sep 08, 2023 pm 04:34 PM

SQLServer atau MySQL? Penyelidikan terkini mendedahkan pemilihan pangkalan data terbaik Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet dan data besar, pemilihan pangkalan data telah menjadi isu penting yang dihadapi oleh perusahaan dan pembangun. Di antara banyak pangkalan data, SQL Server dan MySQL, sebagai dua pangkalan data hubungan yang paling biasa dan digunakan secara meluas, adalah sangat kontroversi. Jadi, antara SQLServer dan MySQL, yang manakah harus anda pilih? Penyelidikan terkini menjelaskan masalah ini untuk kami. Pertama, biarkan

Bagaimana untuk menyambung ke pangkalan data Microsoft SQL Server menggunakan PDO Bagaimana untuk menyambung ke pangkalan data Microsoft SQL Server menggunakan PDO Jul 29, 2023 pm 01:49 PM

Pengenalan kepada cara menggunakan PDO untuk menyambung ke pangkalan data Microsoft SQL Server: PDO (PHPDataObjects) ialah antara muka bersatu untuk mengakses pangkalan data yang disediakan oleh PHP. Ia memberikan banyak kelebihan, seperti melaksanakan lapisan abstraksi pangkalan data dan menjadikannya mudah untuk bertukar antara jenis pangkalan data yang berbeza tanpa mengubah suai sejumlah besar kod. Artikel ini akan memperkenalkan cara menggunakan PDO untuk menyambung ke pangkalan data Microsoft SQL Server dan menyediakan beberapa contoh kod yang berkaitan. langkah

Pembangunan pangkalan data PHP dan SQL Server Pembangunan pangkalan data PHP dan SQL Server Jun 20, 2023 pm 10:38 PM

Dengan populariti Internet, pembangunan laman web dan aplikasi telah menjadi perniagaan utama banyak syarikat dan individu. Pangkalan data PHP dan SQLServer adalah dua alat yang sangat penting. PHP ialah bahasa skrip sebelah pelayan yang boleh digunakan untuk membangunkan laman web dinamik SQLServer ialah sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Microsoft dan mempunyai pelbagai senario aplikasi. Dalam artikel ini, kita akan membincangkan pembangunan PHP dan SQL Server, serta kelebihan, kelemahan dan kaedah aplikasinya. Pertama, mari

Analisis ringkas tentang lima kaedah menyambungkan SQL Server dengan PHP Analisis ringkas tentang lima kaedah menyambungkan SQL Server dengan PHP Mar 21, 2023 pm 04:32 PM

Dalam pembangunan web, gabungan PHP dan MySQL adalah sangat biasa. Walau bagaimanapun, dalam beberapa kes, kita perlu menyambung kepada jenis pangkalan data lain, seperti SQL Server. Dalam artikel ini, kami akan membincangkan lima cara berbeza untuk menyambung ke SQL Server menggunakan PHP.

SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? Sep 10, 2023 pm 01:39 PM

SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? Dalam dunia dipacu data hari ini, ketersediaan yang tinggi adalah salah satu keperluan untuk membina sistem yang boleh dipercayai dan stabil. Sebagai komponen teras penyimpanan dan pengurusan data, ketersediaan tinggi pangkalan data adalah penting untuk operasi perniagaan perusahaan. Di antara banyak pangkalan data, SQLServer dan MySQL adalah pilihan biasa. Jadi dari segi seni bina ketersediaan tinggi, pangkalan data manakah yang lebih sesuai? Artikel ini akan membandingkan kedua-duanya dan memberikan beberapa cadangan.

Perbandingan SQL Server vs. MySQL: Mana yang lebih baik untuk pemprosesan data berskala besar? Perbandingan SQL Server vs. MySQL: Mana yang lebih baik untuk pemprosesan data berskala besar? Sep 09, 2023 am 09:36 AM

SQLServer dan MySQL kini merupakan dua sistem pengurusan pangkalan data hubungan (RDBMS) yang sangat popular. Kedua-duanya adalah alat yang berkuasa untuk menyimpan dan mengurus data berskala besar. Walau bagaimanapun, mereka mempunyai beberapa perbezaan dalam mengendalikan data berskala besar. Artikel ini akan membandingkan SQL Server dan MySQL, memfokuskan pada kesesuaian mereka untuk pemprosesan data berskala besar. Mula-mula, mari kita fahami ciri-ciri asas SQLServer dan MySQL. SQLServer dibangunkan oleh Microsoft

SQL Server dan MySQL bersaing, bagaimana untuk memilih penyelesaian pangkalan data yang terbaik? SQL Server dan MySQL bersaing, bagaimana untuk memilih penyelesaian pangkalan data yang terbaik? Sep 10, 2023 am 08:07 AM

Dengan pembangunan Internet yang berterusan, pemilihan pangkalan data menjadi semakin penting. Di antara banyak pangkalan data, SQLServer dan MySQL adalah dua pilihan berprofil tinggi. SQLServer ialah sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Microsoft, manakala MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka. Jadi bagaimana untuk memilih penyelesaian pangkalan data terbaik antara SQLServer dan MySQL? Pertama, kita boleh membandingkan kedua-dua pangkalan data ini dari segi prestasi. SQLServer sedang diproses

See all articles