SQL Server 发送邮件发送服务

Access俱乐部
?&&&&?&&&&?&&&&?&&&&
您的位置:  > >
SQL server 2000邮件配置方法
来源:51CTO网页 &&点击数:978&&评论数:0 &|&&|&
时 间: 11:48:42
作 者:&&&ID:35404&&城市:上海
摘 要:SQL&server&2000邮件配置方法
SQL server 2000邮件配置方法
--========================================
--SQL 邮件配置
--author:Boyi55 date:
--outlook 2003,sql server 邮局
--========================================
首先要说的一点是,这里要用到的是outlook而不是系统自带的outlook express.我用outlook express试过好多次都没有成功。这次我做的有些乱,所以就打乱顺序来说吧。先说sql server 2000.这里面要配置的主要是sql server 2000的启动帐号和sql agent的启动帐号。不管是sql server 2000还是sqlagent都要用系统管理号帐号。这个可以在sql server 2000里面设,也可以在系统服务里面设。我是在服务里面做的。在运行里打开services.msc找到mssqlserver和sqlserveragent这两个服务。右击属性,在登录选项卡上用“此帐户”点浏览,找到一个管理员帐号,然后输入两次管理员密码。这里我用的是administrator.然后点确定。再打开cmd重启一下sql server 2000。
由于我一直用的outlook express所以这次我新安了outlook 2003.在outlook 2003里新建一个邮件帐户。这里我选用的是163的信箱:。对应的pop3和smtp服务器分别为:pop3.163.com和smtp.163.com。这时如果点测试帐户设置,则最后一步会出错,也就是可以收信而不可以发信。我在163的帮助里找到原因是smtp服务器要求验证。所以。可以点“其他设置”在发送服务器选项卡上选上“我的发送服务器(SMTP)要求验证”下面选择“使用与接收邮件服务器相同的设置”点确定。这样再点“测试帐户设置”就会成功了。然后到控制面板里,找到邮件。点显示“配置文件”这里你会看到里面有一个outlook.如果用的是outlook express则在控制面板里是不会出现邮件这个项目的。然后点确定,打开sql server 2000的企业管理器,展开支持服务,右击“sql 邮件”点属性。这时里面就会出现有outlook了。选择它就可以了。如果要建操作员的话,还得在sqlserveragent属性的邮件配置文件这里也选择outlook。这样,去建一个操作员,输入一个e-mail地址。点测试,过一会到你的信箱里就可以收到信了。呵呵。
要注意的几个问题:
1.sql server 2000的启动帐户要和sqlagent的启动帐户相同。并且不能用系统帐户。
2.smtp服务器是否需要验证。hotmail的免费信箱好像不可以在outlook里设置。
3.在sql邮件运行过程中不能关闭outlook,否则不能发送邮件。
sql 邮件(续)
--==============================
--sql邮件发送
--author:boyi55,date:
--==============================
在电脑前整整坐了一天。下午的时候想到上次只是简单的可以让sql server 2000发送邮件。至于邮件的内容,却只是简单的点了下那个测试按钮所发的一封测试邮件。至于sql 邮件到底能做什么还一点也不了解!刚开始试着用作业,当作业执行完成里发信到指定的信箱里。可是这样,只能发送一个人,并且所发信的内容也只是简单的说明作业成功失败。想起有xp_sendmail这一个存储过程,然后可以在作业里加一个步骤,成功时,用sendmail发一段话到信箱里。失败时,用sendmail发另一段话到信箱里。看了下帮助。还好行容易理解。也很简单的就实现了!那能不能把一个结果集发到我的信箱里呢?这样的话,我就可以把一些常用的统计建成一些作业,当用到的时候就直接执行一下不就可以了吗?这个看上去也很容易实现,可结果往往没有想像的那么好!不过最后还是搞出来了。当时正好在看webcasts,所以顺手拿了一个cube的查询过来,呵呵。下面贴些代码出来吧!
--=============================================
--将hello,this e-mail sent from sql server !
--发送给:,
--副本发送给:queeny_.cn
--邮件主题是:alter from you SQL server 2000
--author:boyi55,date:
--=============================================
xp_sendmail @recipients=';',
@message='hello,this e-mail sent from sql server !',
@copy_recipients='',
@subject='Alter from you SQL Server 2000'
--=======================================
--将存储过程的结果发送给指定联系人
--author:boyi55,date:
--=======================================
exec xp_sendmail [url=mailto:'',@query='sp_configure']'',@query='sp_configure'[/url]
--============================================
--统计northwind数据库中相关信息
--并将结果发送到指定的信箱
--author:boyi55,date:
--原理:northwind数据库中没有xp-sendmail
--存储过程,所以采用方式为:
--将查询结果写入一个全局临时表
--然后在删除全局临时表
--===========================================
set nocount on
select case when(grouping(od.productid)=1)then '定单总计:'
else isnull(od.productid,'空值') end as productid,
case when (grouping(od.orderid)=1)then '产品总计:'
else isnull(od.orderid,'空值')end as orderid,sum(od.quantity) as'总计'
into ##boyi55
from (select convert(nvarchar(10),productid) as productid,convert(nvarchar(10),orderid) as orderid,quantity from [order details]) as od
group by od.productid,od.orderid
exec master..xp_sendmail @recipients=';;',
@subject='northwind数据库中order details相关信息汇总结果',
@message='此信息由sql server 2000数据库作业自动发送,如果输出错误,请直接回复e-mail到:[url=mailto:][/url]或者电话联系侯向博:!',
@query='select * from ##boyi55',
@width=100--设置查询的输出文本行宽
drop table ##boyi55
set nocount off
--===========================================
--将结果作为附件文件发送
--author:boyi55,date:
--===========================================
exec xp_sendmail @recipients='',
@query='select * from information_schema.tables',
@subject='SQL Server report',
@message='The contents of information_schema.tables:',
@attach_results='true',
@width= 250
======================
这里我想到两个问题。记得好久以前,长风兄问我outlook怎样开机就可以最小化。当然只记得快捷方式属性里有一个运行方式中有一个属性“最小化”,可试了一下还是老样子一点反应都没有。这里可以有几种方法解决。outlook 2003启动的时候在任务栏和通知区域都有显示图标。只要在通知区域右击outlook图标选择最小化时隐藏就可以了。还有可以用任务计划,定义一个任务,当计算机开机时自动运行outlook,并且要选择登录前运行。另外还可以用启动和@命令,但比较一下还是用任务计划比较好一点。
还有一点就是outlook和sqlserveragent这两个,如果sqlserveragent已经启动,这时候再启动outlook会报错,说是文件正在被使用。这时必须先停掉sqlserveragent才可以把outlook启动开。所以我在我的服务器上设置的是outlook在登录前启动,而sqlserveragent则手动启动。&
      
&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】
Access网店
价格:¥100 元
价格:¥280 元
价格:¥200 元
(08-28 17:55)
(08-28 17:07)
(08-28 14:58)
(08-28 14:55)
(08-28 12:10)
(08-27 20:37)
(08-27 20:26)
(08-27 14:56)
(08-27 08:28)
(08-26 15:38)
Access软件网 版权所有 CopyRight
提供支持 本站特聘法律顾问: 李慧 律师在SQL Server中发送邮件配置及编程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在SQL Server中发送邮件配置及编程
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩13页未读,
定制HR最喜欢的简历
你可能喜欢博客访问: 540536
博文数量: 128
博客积分: 3662
博客等级: 中校
技术积分: 1380
注册时间:
认证徽章:
Linux&MySQL&PHP&Nginx&Apache&MSSQL&Shell
分类: Mysql/postgreSQL 11:08:11
1:配置数据库邮件
2:配置好之后就可以发送邮件了
发送邮件是以msdb下面是存储过程sp_send_dbmail来发送的
DECLARE @tableHTML NVARCHAR(MAX) ;
DECLARE @title NVARCHAR(MAX) ;
@title='测试邮件';
SET @tableHTML =N'标题'
&&&&&&&&&&&&&&&&+N''
&&&&&&&&&&&&&&&&+N'account'
&&&&&&&&&&&&&&&&+N'name'
&&&&&&&&&&&&&&&&+N'usd'
&&&&&&&&&&&&&&&&+N'paypal'
&&&&&&&&&&&&&&&&+N'datetime'
&&&&&&&&&&&&&&&&+CAST (
&&&&&&&&&&&&&&&&&&&&(SELECT
&&&&&&&&&&&&&&&&&&&&td = account,
&&&&&&&&&&&&&&&&&&&&'',td = name,
&&&&&&&&&&&&&&&&&&&&'',td = usd,
&&&&&&&&&&&&&&&&&&&&'',td = paypal,
&&&&&&&&&&&&&&&&&&&&&'',td = datetime&from Databases.dbo.xxx
FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +N'' ;
&&&&EXEC msdb.dbo.sp_send_dbmail
&&&&&&&&&&&&@profile_name='mail config(这里是上面地址配置的邮件配置文件名)',
&&&&&&&&&&&&@recipients='xxx.163.',(收件箱地址)
&&&&&&&&&&&&@copy_recipients='',(抄送地址)
&&&&&&&&&&&&@subject = @title,(邮件标题)
&&&&&&&&&&&&@body = @tableHTML,(正文)
&&&&&&&&&&&&@body_format = 'HTML' ;
对于上面的格式,注意width="1541px 来设置表格的宽度,否则有些数据会自动换行
F5运行上面是命令就可以发送邮件了
-------------------------------------------------------------------------------------------------------------------------------------------------------
发现写成sp比较方便实用
CREATE PROCEDURE sp_email
&&&&&&&&@smail varchar(200),
&&&&&&&&@cmail varchar(200)
DECLARE @tableHTML NVARCHAR(MAX) ;
declare @title varchar(100)
declare @edate varchar(10)
declare @sum varchar(10)
-- 定义日期和退款金额
select @edate=dd,@sum=ff from openquery(GAME_ADMIN,
'SELECT DATE_ADD(CURDATE(),INTERVAL -1 DAY) dd,ABS(SUM(g_amount)) ff FROM gp_admin.gm_payment_reversed WHERE g_created_date BETWEEN DATE_ADD(CURDATE(),INTERVAL -1 DAY) AND CURDATE()')
-- 定义邮件标题
set @title=@edate+'退款'+@sum
-- 定义邮件内容
set @tableHTML=N'退款订单'
&&&&&&&&&&&&&&&&+N''
&&&&&&&&&&&&&&&&+N'g_payment_gateway_no'
&&&&&&&&&&&&&&&&+N'g_created_by'
&&&&&&&&&&&&&&&&+N'g_payment_type'
&&&&&&&&&&&&&&&&+N'amount'
&&&&&&&&&&&&&&&&+N'g_trans_no'
&&&&&&&&&&&&&&&&+N'g_parent_trans_no'
&&&&&&&&&&&&&&&&+N'g_trans_error'
&&&&&&&&&&&&&&&&+N'g_created_date'
&&&&&&&&&&&&&&&&+N'g_merchant_trans_no'
&&&&&&&&&&&&&&&&+CAST (
&&&&&&&&&&&&&&&&&&&&( select td = g_payment_gateway_no,
&&&&&&&&'',td = g_created_by,
&&&&&&&&'',td = g_payment_type,
&&&&&&&&'',td = amount,
&&&&&&&&'',td = g_trans_no,
&&&&&&&&'',td = g_parent_trans_no,
&&&&&&&&'',td = g_trans_error,
&&&&&&&&'',td = convert(varchar(19),g_created_date,121),
&&&&&&&&'',td = g_merchant_trans_no from openquery(GAME321_ADMIN,'SELECT g_payment_gateway_no,
g_created_by,
g_payment_type,
CAST(g_amount AS SIGNED) amount,
g_trans_no,g_parent_trans_no,
g_trans_error,
g_created_date,
g_merchant_trans_no
FROM gp_admin.gm_payment_reversed WHERE g_created_date BETWEEN DATE_ADD(CURDATE(),INTERVAL -1 DAY) AND CURDATE()')
&&&&&&&&&&&&&&&&&&&&FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +N'' ;
-- 发送邮件
&&&&&&&&&&&&&&&&&&&&&&&&&&&&EXEC msdb.dbo.sp_send_dbmail @profile_name='mail config', -- 邮件配置文件名
&&&&&&&&&&&&&&&&&&&&&&&&&&&&@recipients=@smail, -- 发送邮件地址
&&&&&&&&&&&&&&&&&&&&&&&&&&&&@copy_recipients=@cmail, -- 抄送邮件地址
&&&&&&&&&&&&&&&&&&&&&&&&&&&&@subject = @title, -- 邮件标题
&&&&&&&&&&&&&&&&&&&&&&&&&&&&@body = @tableHTML, -- 邮件内容
&&&&&&&&&&&&&&&&&&&&&&&&&&&&@body_format = 'HTML' ;
exec dbo.sp_email '发送邮件地址1;发送邮件地址2','抄送邮件地址1;抄送邮件地址2'
阅读(3471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。Posts - 150,
Articles - 12,
Comments - 1252
(SQL Server & MySQL) DBA
12:21 by 听风吹雨, ... 阅读,
  数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果。
二、 基础知识
  msdb系统数据库保存有关Job,Database Mail,Nodifyication等等之类信息的。MSSQL2005之后的邮件功能,使用了Services Broker进行了队列处理。然后使用外部进程,这个可以在配置成功Mail以后查看任务管理器中的进程。
  另外 sp_send_dbmail是手动发送邮件的存储过程,我们必须显示的赋值才能发送。
三、 图形界面方式创建数据库邮件
下面就以SSMS的图形界面介绍如何创建数据库邮件;
(Figure1:数据库邮件)
(Figure2:以步骤形式创建)
(Figure3:创建配置文件名)
(Figure4:添加Email帐号)
这里设置的Email信息是表示之后就以这个Email帐号发送邮件,这里的服务器名称填写的是smtp.126.com,端口为25,你需要通过下面的方式测试这个地址是否可以访问。如果不通有可能是你机器防火墙的问题。
(Figure5:测试ping)
(Figure6:测试telnet)
(Figure7:配置文件与邮件对应关系)
这里你可以添加多个Email帐号,在失败的时候会使用下一个用户尝试发送。
(Figure8:公共配置文件)
(Figure9:系统尝试,不需要修改)
(Figure10:成功界面)
(Figure11:成功发送邮件)
四、 数据库邮件相关脚本
--脚本创建数据库邮件
--1.开启数据库邮件
EXEC sp_configure 'show advanced options',1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'database mail xps',1
RECONFIGURE WITH OVERRIDE
--2.创建邮件帐户信息
msdb..sysmail_add_account_sp
@ACCOUNT_NAME ='ETLErrorMailLog',--邮件帐户名称
@EMAIL_ADDRESS ='******@126.com',--发件人邮件地址
@DISPLAY_NAME ='系统管理员',--发件人姓名
@REPLYTO_ADDRESS =NULL,
@DESCRIPTION = NULL,
@MAILSERVER_NAME = 'SMTP.126.COM',--邮件服务器地址
@MAILSERVER_TYPE = 'SMTP',--邮件协议
@PORT =25,--邮件服务器端口
@USERNAME = '******@126.com',--用户名
@PASSWORD = '******',--密码
@USE_DEFAULT_CREDENTIALS =0,
@ENABLE_SSL =0,
@ACCOUNT_ID = NULL
--3.数据库配置文件
IF EXISTS(SELECT name FROM msdb..sysmail_profile WHERE name=N'ETLErrorProfileLog')
EXEC msdb..sysmail_delete_profile_sp
@profile_name='ETLErrorProfileLog'
EXEC msdb..sysmail_add_profile_sp
@profile_name = 'ETLErrorProfileLog',--profile名称
@description = '数据库邮件配置文件',--profile描述
@profile_id = null
--4.用户和邮件配置文件相关联
EXEC msdb..sysmail_add_profileaccount_sp
@profile_name = 'ETLErrorProfileLog',--profile名称
@account_name = 'ETLErrorMailLog',--account名称
@sequence_number = 1--account 在profile 中顺序
--5.1发送简单文本的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',--profile名称
@recipients = '******@qq.com',--收件人
@subject = 'Test title this is test ',--邮件标题
@body = N'数据库邮件测试',--邮件内容
@body_format = 'HTML'--邮件格式
--5.2发送包含查询的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '查询结果',
@query = 'SELECT * FROM msdb.dbo.sysmail_faileditems'
--5.2发送包含附件的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '包含附件',
@body = '有附件,请查收',
@file_attachments = 'c:\a.txt'
--5.3发送查询作为附件的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '查询结果',
@body = '查询结果在附件中',
@query = 'SELECT * FROM msdb.dbo.sysmail_faileditems',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'a.txt'
五、 参考文献SQL自动发邮件_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SQL自动发邮件
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩13页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 发送邮件的格式 的文章

 

随机推荐