进入QQ邮箱点击设置
点击账户TAB
开启 POP3/SMTP服务和IMAP/SMTP服务
*开启服务后会生产授权码的,这个授权码要记下来,下面会用到
step1 :启用sql server 邮件的功能
-- 启用 sql server 邮件的功能
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE;
GO
step2:查看数据库邮件功能是否开启
-- 查询数据库的配置信息
--SELECT * FROM sys.configurations;
-- 查看数据库邮件功能是否开启,value 值为1表示已开启,0为未开启
SELECT name ,
value ,
description ,
is_dynamic ,
is_advanced
FROM sys.configurations
WHERE name LIKE '%mail%';
step 3:创建邮件账户
--创建邮件账户
IF exists(SELECT * FROM msdb..sysmail_account WHERE NAME='ITEPI_EOMS') --判断邮件账户名为 ITEPI_EOMS 的账户是否存在
BEGIN
EXEC msdb..sysmail_delete_account_sp @account_name='ITEPI_EOMS' -- 删除邮件账户名为 ITEPI_EOMS 的账户
END
ESEC msdb..sysmail_add_account_sp --创建邮件账户
@account_name = 'ITEPI_EOMS' -- 邮件帐户名称
,@email_address = '这里填你刚才配置的邮箱地址' -- 发件人邮件地址
,@display_name = 'ITEPI_EOMS' -- 发件人姓名
,@replyto_address = null -- 回复地址
,@description = null -- 邮件账户描述
,@mailserver_name = 'smtp.qq.com' -- 邮件服务器地址
,@mailserver_type = 'SMTP' -- 邮件协议
,@port = 587 -- 邮件服务器端口(或是456)
,@username = '这里填你刚才配置的邮箱地址' -- 用户名
,@password = '这里填刚才让你记下来的授权码' -- 密码(第三方用QQ密码是登录不了的)
,@use_default_credentials = 0 -- 是否使用默认凭证,0为否,1为是
,@enable_ssl = 1 -- 是否启用 ssl 加密,0为否,1为是(QQ邮箱这里必须为 1)
,@account_id = null -- 输出参数,返回创建的邮件账户的ID
step 4:生成邮件配置文件
--生成邮件配置文件
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
step 5:邮件账户和邮件配置文件相关联
-- 邮件账户和邮件配置文件相关联
exec msdb..sysmail_add_profileaccount_sp
@profile_name = 'SendEmailProfile', -- 邮件配置文件名称
@account_name = 'ITEPI_EOMS', -- 邮件账户名称
@sequence_number = 1 -- account 在 profile 中的顺序,一个配置文件可以有多个不同的邮件账户
step 6:测试数据库是否配置成功
step 7:创建触发器调用发送邮件功能
--删除触发器
--Drop Trigger UserAdvise_Send_Mail
--创建一个 insert 类型的 after 触发器(用户建议)
create trigger UserAdvise_Send_Mail
on UserAdvise
after insert
as
declare @UserName varchar(20)
declare @AdviseContent varchar(200)
declare @Content varchar(300)
declare @CreateTime datetime
declare @UserMail varchar(25)
select @Content=AdviseContent,@UserMail=UserMail from inserted
set @AdviseContent='表哥,您收到一封来自一派科技用户建议邮件,内容如下:'+char(10)+@Content
+char(10)+'该用户联系邮箱为:'+@UserMail
exec msdb.dbo.sp_send_dbmail @profile_name='SendEmailProfile', -- 邮件配置文件名称
@recipients='你想发给哪个邮箱,这里就填哪个邮箱地址', -- 邮件发送地址
@subject='用户建议', -- 邮件标题
@body=@AdviseContent, --邮件内容
@body_format='text' -- 邮件内容的类型,text 为文本,还可以设置为 html
go
SQL脚本测试触发器能否成功发出邮件
-- 新添加一条数据,用以触发 insert 触发器
--delete UserAdvise
insert into UserAdvise(UserName,AdviseContent,CreateTime,UserMail)
values('SINCLAIR','测试一下邮件能不能发送出去',GETDATE(),'[email protected]')
查看发送记录及日志脚本
use msdb
go
--delete sysmail_allitems
select * from sysmail_allitems -- 邮件发送情况,可以用来查看邮件是否发送成功
--delete sysmail_mailitems
select * from sysmail_mailitems -- 发送邮件的记录
--delete sysmail_event_log
select * from sysmail_event_log -- 数据库邮件日志,可以用来查询是否报错