现在的位置: 首页 > 综合 > 正文

存储过程实现邮件发送

2013年09月02日 ⁄ 综合 ⁄ 共 2656字 ⁄ 字号 评论关闭

测试环境:  
   
  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  
   
  步骤二:   添加配置文件  
   
  说明:如果之前您已经通过控制面版->邮件   选项添加过配置文件(比如,配置文件名:test),可省略以下1、2、3操作步骤  
   
   
  1   单击“工具”菜单中的“服务”,然后单击“添加”按钮。  
  2   选择"Internet   电子邮件",单击“确定”。  
  3   下面的步骤是设置电子邮件帐号,请参考Microsoft   Outlook帮助文件,这里不再赘述。  
  4   利用配置好的电子邮件帐号收发邮件,确认配置成功。  
   
  步骤三:   配置MSSQLSERVER服务采用邮件配置文件  
   
  1   重新启动MSSQLSERVER服务(必须的,否则MSSQLSERVER服务检测不到上一步骤添加的配置文件)  
  2   打开企业管理器->展开服务器->支持服务->右击"邮件"->点击下拉框,你会发现  
  "Microsoft   Outlook   Internet   Settings"选项(如果您通过控制面版->邮件   选项添加过配置文件,比如:配置文件名:test,那您将会发现   test选项),选中您配置好的配置文件,点击"测试".  
  如果弹出表示成功的对话框,那恭喜你,已经   大功告成了.  
   
  步骤四:享受你的劳动成果  
   
  要求以MSSQLSERVER服务采用的Windows帐号登录Windows   2000   Server,即你登录计算机所采用的帐号要和MSSQLSERVER服务采用的Windows帐号相同。  
  1   打开SQL   Server的查询分析器  
   
  2   输入下列SQL语句,执行  
  exec   master..xp_sendmail   'test@163.com','Hello,World!'  
   
  3   好了,去你的邮箱收邮件去吧!    

邮件发送存储过程:
CREATE  PROCEDURE usp_SendMail @To varchar(100) ,@Subject varchar(400)=' '@Body varchar(8000=' ' 

AS 

Declare @object int 
Declare @hr int 

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''mail.idg-rbi.com.cn' 

--下面三条语句是smtp验证,如果服务器需要验证,则必须要这三句,你需要修改用户名和密码
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','x@mail.com' 
EXEC @hr = sp_OASetProperty @object'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value','pass' 

EXEC @hr = sp_OAMethod @object'Configuration.Fields.Update'null
EXEC @hr = sp_OASetProperty @object'To'@To
EXEC @hr = sp_OASetProperty @object'Bcc''xx@yahoo.com.cn'
EXEC @hr = sp_OASetProperty @object'From','<x@mail.com>'
EXEC @hr = sp_OASetProperty @object, 'Subject', @Subject
EXEC @hr = sp_OASetProperty @object, 'BodyFormat''MailFormat.Text'

EXEC @hr = sp_OASetProperty @object, 'TextBody', @Body

SET @Body = REPLACE(@Body,CHAR(13),'<br />')
EXEC @hr = sp_OASetProperty @object, 'HtmlBody',@Body
EXEC @hr = sp_OAMethod @object, 'Send', NULL

--判断出错
IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object   
   RETURN @object
END
PRINT 'success'
EXEC @hr = sp_OADestroy @object 

GO

抱歉!评论已关闭.