当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server中发送邮件的新方式

MSSQL
SQL Server--全文本检索的应用(一)
SQL 2005的SSIS与Oracle的迁移性能
SQL优化实例:从运行30分钟到运行只要30秒
无法在SQL Server2005 Manger Studio 中录入中文的问题
SQL Artisan多表查询和统计
SQL Server数据库开发人员在应聘时经常被问到哪些问题
一个完整的SQL SERVER数据库全文索引的示例
SQL Server安全之加密术和SQL注入攻击
如何对SQL Server中的tempdb“减肥”
SQL Server 2005升级的十个步骤
如何在SQL Server开发中融入极限编程技术
SQL Server应用程序高级SQL注入(下)
SQL Server应用程序高级SQL注入(上)
SQL Server连接中的常见错误
IIS中SQL Server数据库的安全问题
SQL Server 2005区域配置和安全工具
保护 SQL Server 的十个步骤
如何利用SQL Server 2000的复制选项
SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
SQL SERVER 2005同步复制技术的应用

MSSQL 中的 SQL Server中发送邮件的新方式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 49 ::
收藏到网摘: n/a

 在.NET中,大家知道,可以使用System.Web.Mail来发送邮件。在Framework 1.1下支持验证。private void Page_Load(object sender, System.EventArgs e) 
  {
  MailMessage mail = new MailMessage();
  mail.To = "[email protected]";
  mail.From = "[email protected]";
  mail.Subject = "this is a test email.";
  mail.Body = "Some text goes here";
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "my_username_here"); //set your username here
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "super_secret"); //set your password here
  SmtpMail.SmtpServer = "mail.mycompany.com"; //your real server goes here
  SmtpMail.Send( mail );
  }
  以前我曾写过在.NET下发送邮件的方法,详见:
  http://dev.csdn.net/develop/article/17/17189.shtm
  SQL Server中,我们一般使用SQL本身的邮件发送方式,但需要配置Exchage Server、Outlook等,也是一个比较繁琐的事情。很多人抱怨说配置不成功。
  其实,我们可以在 SQL Server中创建 OLE 对象实例,调用IIS SMTP自带的发送组件来实现邮件发送。
  我们建立这个存储过程,你需要修改的地方是,SmtpServer的名字
  Create PROCEDURE sys_sendmail @From varchar(100) , @To varchar(100) , @Bcc varchar(500), @Subject varchar(400)=" ", @Body ntext =" "
  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’, ’smtp.163.com’
  --下面三条语句是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’,’lihonggen0’
  EXEC @hr = sp_OASetProperty @object, ’Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value’,’xxx’
  EXEC @hr = sp_OAMethod @object, ’Configuration.Fields.Update’, null
  EXEC @hr = sp_OASetProperty @object, ’To’, @To
  EXEC @hr = sp_OASetProperty @object, ’Bcc’, @Bcc
  EXEC @hr = sp_OASetProperty @object, ’From’, @From
  EXEC @hr = sp_OASetProperty @object, ’Subject’, @Subject
  EXEC @hr = sp_OASetProperty @object, ’TextBody’, @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 注意:必须确保安装Smtp,可以访问CDO对象。