利用SQLServer数据库发送邮件
2018-06-22 04:36:00来源:未知 阅读 ()
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql
这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候。等等,,,
先回顾一下以前用C#发邮件的内容:http://www.cnblogs.com/dunitian/p/5682930.html
可能有些人看不太懂,这个是简单演示:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/0.知识拓展/01.网络编程/3.System.Net.Mail/3.3.SmtpClient/EmailHelper.cs
步入正轨:
在配置之前请先把邮件的POP3之类的设置一下:
简图:
其他邮箱都是类似的,可以参考这个:http://www.cnblogs.com/dunitian/p/5682930.html#god
图形化演示:
配置名字随意取,可以用项目名。显示名称建议用版本号+服务器ip,这样出问题可以定位跟踪
微软图形化的东西一般有个特点,一路下一步基本上能解决所有基础问题
勾选一下(貌似不勾选也没事)
测试一下:
发一封邮件到“我为NET狂”的官方邮件去
去看看:
命令演示:(不需要记,你又不是DBA,会用即可)
脚本:
--开启发邮件功能 exec sp_configure 'show advanced options',1 reconfigure with override go exec sp_configure 'database mail xps',1 reconfigure with override go --创建邮件帐户信息 exec msdb.dbo.sysmail_add_account_sp @account_name ='dunitian1', -- 邮件帐户名称 @email_address ='xxxx@yeah.net', -- 发件人邮件地址 @display_name ='SQLServer2014_192.168.1.20', -- 发件人姓名 @MAILSERVER_NAME = 'smtp.yeah.net', -- 邮件服务器地址 @PORT =25, -- 邮件服务器端口 @USERNAME = 'xxxx@yeah.net', -- 用户名 @PASSWORD = '邮件密码' -- 密码 GO --数据库配置文件 exec msdb.dbo.sysmail_add_profile_sp @profile_name = 'SQLServer_DotNetCrazy1', -- 配置名称 @description = '数据库邮件配置文件' -- 配置描述 go --用户和邮件配置文件相关联 exec msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'SQLServer_DotNetCrazy1', -- 配置名称 @account_name = 'dunitian1', -- 邮件帐户名称 @sequence_number = 1 -- account 在 profile 中顺序(默认是1) go
发送邮件脚本:
exec msdb.dbo.sp_send_dbmail @profile_name = 'SQLServer_DotNetCrazy1', --配置名称 @recipients = 'dotnetcrazy@foxmail.com', --收件名称 @body_format = 'HTML', --内容格式 @subject = '文章标题', @body = '邮件内容'结果:20的ip也发过来了
--相关查询
--select * from msdb.dbo.sysmail_allitems
--select * from msdb.dbo.sysmail_faileditems --失败状态的消息
--select * from msdb.dbo.sysmail_unsentitems --看未发送的消息
--select * from msdb.dbo.sysmail_sentitems --查看已发送的消息--select * from msdb.dbo.sysmail_event_log --记录日记
参考文章:
http://www.cnblogs.com/junqingday/p/4187161.html
exec sp_configure 'show advanced options',1 RECONFIGURE WITH OVERRIDE go exec sp_configure 'database mail xps',1 RECONFIGURE WITH OVERRIDE go --2.创建邮件帐户信息 EXEC msdb..Sysmail_add_account_sp @ACCOUNT_NAME ='OCTMamiETL',-- 邮件帐户名称 @EMAIL_ADDRESS ='OCTMamiETL@163.com',-- 发件人邮件地址 @DISPLAY_NAME ='系统管理员',-- 发件人姓名 @REPLYTO_ADDRESS =NULL, @DESCRIPTION = NULL, @MAILSERVER_NAME = 'SMTP.163.COM',-- 邮件服务器地址 @MAILSERVER_TYPE = 'SMTP',-- 邮件协议 @PORT =25,-- 邮件服务器端口 @USERNAME = 'OCTMamiETL@163.com',-- 用户名 @PASSWORD = 'ABC123',-- 密码 @USE_DEFAULT_CREDENTIALS =0, @ENABLE_SSL =0, @ACCOUNT_ID = NULL GO --3.数据库配置文件 IF EXISTS(SELECT name FROM msdb..sysmail_profile WHERE name = N'ETLErrorProfileLog') BEGIN EXEC msdb..Sysmail_delete_profile_sp @profile_name='ETLErrorProfileLog' END EXEC msdb..Sysmail_add_profile_sp @profile_name = 'ETLErrorProfileLog',-- profile 名称 @description = '数据库邮件配置文件',-- profile 描述 @profile_id = NULL go --4.用户和邮件配置文件相关联 EXEC msdb..Sysmail_add_profileaccount_sp @profile_name = 'ETLErrorProfileLog',-- profile 名称 @account_name = 'OCTMamiETL',-- account 名称 @sequence_number = 1 -- account 在 profile 中顺序 --5.发送文本测试邮件 EXEC msdb..Sp_send_dbmail @profile_name='ETLErrorProfileLog', @recipients='OCTMamiETL@163.com',--收件人 @subject='Test title this is test ', @body=N'z中文邮件内容 中文邮件内容' go ----------------------------------------------------------------------------------- /* 功能说明:启用警报系统里面的邮件配置 参数说明: xp_instance_regwrite 修改注册表 */ EXEC msdb.dbo.Sp_set_sqlagent_properties @email_save_in_sent_folder=1 EXEC master.dbo.Sp_mssetalertinfo @pagersendsubjectonly = 0 --启用警报系统 【在通知消息中包含电子邮件的正文】 EXEC master.dbo.Xp_instance_regread N'HKEY_LOCAL_MACHINE',--启用警报系统 【启用邮件配置文件】 N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile' ---邮件系统【选择数据库邮件】 EXEC master.dbo.Xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', EXEC master.dbo.Xp_instance_regwrite N'HKEY_LOCAL_MACHINE',--启用警报系统 【启用邮件配置文件】 N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile',---邮件系统【选择数据库邮件】 N'REG_SZ', 'ETLErrorProfileLog' ---邮件配置文件【邮件配置里面的SQLMailProfile】 ----------------------------------------------------------------------------------- DECLARE @Sys_OperatorsName VARCHAR(100) SET @Sys_OperatorsName='BSMicheal' IF EXISTS (SELECT name FROM msdb.dbo.sysoperators WHERE name = @Sys_OperatorsName) BEGIN EXEC msdb..Sp_delete_operator @name = @Sys_OperatorsName -- 操作员 END EXEC msdb.dbo.Sp_add_operator @name = @Sys_OperatorsName, @enabled = 1, @weekday_pager_start_time = 90000, @weekday_pager_end_time = 180000, @saturday_pager_start_time = 90000, @saturday_pager_end_time = 180000, @sunday_pager_start_time = 90000, @sunday_pager_end_time = 180000, @pager_days = 127, @email_address = 'OCTMamiETL@163.com',-----仅可以对 SQL Mail 使用电子邮件别名。必须对数据库邮件使用电子邮件地址。 @pager_address = N'', @netsend_address = N'' /* 功能说明: 在Job中添加操作员的操作 参数说明: @notify_level_email指定何时将该作业的项放入 Microsoft Windows 应用程序日志。 eventlog_level 的数据类型为 int 【0 从不 1 成功时 2 失败时 3 始终】 修改说明:Create by LY on 2011-010-10 */ IF EXISTS (SELECT 1 FROM msdb.dbo.sysjobs WHERE name = 'dad') BEGIN EXEC msdb.dbo.Sp_update_job @job_name = 'dad',---对应的作业名称 @notify_level_email = 2, @notify_level_netsend = 2, @notify_level_page = 2, @notify_email_operator_name = 'BSMicheal' ---对应的操作员 END;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:关于NuGet
- 利用PHP实现开心消消乐的算法示例 2020-03-22
- Yii操作数据库的3种方法 2020-02-20
- PHP实现的贪婪算法实例 2020-02-20
- 利用PHP获取汉字首字母并且分组排序详解 2020-02-08
- Laravel如何使用数据库事务及捕获事务失败后的异常详解 2020-02-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash