sp_send_dbmail发邮件不能跨域问题,请各位指导!TKS!

sunriseknits 2009-05-21 05:03:47
exec msdb.dbo.sp_send_dbmail @profile_name='YKERP',@recipients='lijp@youngor-sunrise.cn;lijp@youngor-knits.com',
@subject='PD取任务缸号出现色号不同,尽快分析查找原因(一周内数据)',
@query='select top 1 batch_no from finishingdb..PdBatchHead with(nolock)',
@body='数据如下(立即执行此过程查看明细:Finishingdb..ProFindPDColorDiff3):'

执行如上的代码,却只能发送至一个邮箱,帐号是登录的哪个域就能发送至哪个域.而其它的则发送不成功.不知是何原故?
请各全指导,谢谢!
...全文
219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ray_Zhang 2009-08-30
  • 打赏
  • 举报
回复
DNS setting problem
sunriseknits 2009-05-22
  • 打赏
  • 举报
回复
请有经验之士指点一二.
  • 打赏
  • 举报
回复
小梁的blog中有一篇,可以去看看
sunriseknits 2009-05-21
  • 打赏
  • 举报
回复
SQL服务为SQL2005,请有经验的指导一二,谢谢!
yuangang1011 2009-05-21
  • 打赏
  • 举报
回复
SQL Server怎样配置发送电子邮件
通常大家都知道:SQL Server与Microsoft Exchange Server集成性很好,关于这方面的配置,在SQL Server的联机帮助里有详细的说明,在此不再赘述。然而我们更关心的问题是:在没有Exchange Server的情况下,如何配置SQL Server利用Internet 邮件服务器发送邮件?


笔者曾为这问题伤透了脑筋,搜遍了互联网上的相关资料,发现仅有的几篇资料中有的是一笔带过,有的虽然介绍了操作步骤,可按照步骤一步一步操作下来,结果总是失败。为此笔者反复实验,终于找到一种简单有效的方法,不敢独自享受,下面是详细的配置步骤,如果您在操作的过程中碰到什么问题,请留言。


测试环境:


1 Windows 2000 Server
2 SQL Server 2000+SP3
3 Microsoft OutLook (Office 2000)


准备一个Internet邮件帐户:


测试电子邮件帐户:test@163.com
Smtp服务器 smtp.163.com
pop3服务器 pop.163.com


步骤一: 更改电子邮件配置


1 打开Microsoft OutLook 单击“工具”菜单中的“选项”,然后单击“邮件服务”选项卡。
2 单击“重新配置邮件支持”。
3 选择“用于企业或工作组”选项
4 重新启动Microsoft OutLook


步骤二: 添加配置文件


1 单击“工具”菜单中的“服务”,然后单击“添加”按钮。
2 选择"Internet 电子邮件",单击“确定”。
3 下面的步骤是设置电子邮件帐号,请参考Microsoft Outlook帮助文件,这里不再赘述。
4 利用配置好的电子邮件帐号收发邮件,确认配置成功。


步骤三: 配置MSSQLSERVER服务采用邮件配置文件


1 重新启动MSSQLSERVER服务(必须的,否则MSSQLSERVER服务检测不到上一步骤添加的配置文件)
2 打开企业管理器->展开服务器->支持服务->右击"邮件"->点击下拉框,你会发现
"Microsoft Outlook Internet Settings"选项,点击"测试"。如果弹出表示成功的对话框,那恭喜你,已经 大功告成了。


步骤四:享受你的劳动成果


1 打开SQL Server的查询分析器


2 输入下列SQL语句,执行
exec master..xp_sendmail 'test@163.com','Hello,World!'


3 好了,去你的邮箱收邮件去吧!


注意事项:以上的配置过程要求以MSSQLSERVER服务采用的Windows帐号登录Windows 2000 Server,即你登录计算机所采用的帐号要和MSSQLSERVER服务采用的Windows帐号相同。

------------------

1>一种通过配置服务器,使用xp_sendmail ,不过此种方法需要配置SQL服务器,设定SQL的默认邮件发送地址( 通过设定MS Server实现) 省略...
2>另外一种 通过调用外部com组件(服务器需装office组件)

Declare @hr int
declare @errnum as int
declare @object as int
set @errnum=0 --正确的

EXEC @hr = sp_OACreate 'cdo.Message', @object OUT

EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', '192.168.150.251'

EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext").Value','1'

EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value','1'
EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value', @from
EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value',@pas

EXEC @hr = sp_OAMethod @object, 'Configuration.Fields.Update', null
EXEC @hr = sp_OASetProperty @object, 'To', @to
--EXEC @hr = sp_OASetProperty @object, 'BodyPart.Charset','big5'
EXEC @hr = sp_OASetProperty @object, 'Bcc', @bcc
EXEC @hr = sp_OASetProperty @object, 'cc', @cc
EXEC @hr = sp_OASetProperty @object, 'From', @from
EXEC @hr = sp_OASetProperty @object, 'Subject', @title

EXEC @hr = sp_OASetProperty @object, 'TextBody',@body
EXEC @hr = sp_OAMethod @object, 'Send', NULL


IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
set @errnum=@hr
print @object
END
--PRINT 'success'
EXEC @hr = sp_OADestroy @object
GO
另外的屬性有(cdo.Message)
CDO.Message对象:
代表了我们要发送的邮件对象。CDO.Message msg = new Message();
msg.Form:发件人邮件地址
msg.To:收件人邮件地址
msg.Subject:邮件标题
msg.HtmlBody:邮件主体,比如"<html><body>" + "邮件信息" + "</body></html>";
msg.TextBody
msg.AddAttachment():添加附件
msg.Send():发送邮件

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧