sql-server - SQL Server : send email

标签 sql-server email

我想使用 SQL Server 发送电子邮件,并从互联网上找到了两种可能的方式:

  1. 使用 AOSMTP.Mail

    Create PROCEDURE [dbo].[RC_SendEmail]  @ServerAddr varchar(80),
       @FromAddr varchar(80), 
       @Recipient varchar(80), 
       @Subject varchar(132),
       @BodyText varchar(2000)
    
    AS
      DECLARE @hr int
      DECLARE @oSmtp int
      DECLARE @nRet int
    
      EXEC @hr = sp_OACreate 'AOSMTP.Mail',@oSmtp OUT
      EXEC @hr = sp_OASetProperty @oSmtp, 'RegisterKey', 'replace this text by your key'
      EXEC @hr = sp_OASetProperty @oSmtp, 'ServerAddr', @ServerAddr
      EXEC @hr = sp_OASetProperty @oSmtp, 'FromAddr', @FromAddr
      EXEC @hr = sp_OAMethod @oSmtp, 'AddRecipient', NULL, @Recipient, @Recipient, 0 
      EXEC @hr = sp_OASetProperty @oSmtp, 'Subject', @Subject 
      EXEC @hr = sp_OASetProperty @oSmtp, 'BodyText', @BodyText 
    
      EXEC @hr = sp_OAMethod @oSmtp, 'SendMail', @nRet OUT 
      EXEC @hr = sp_OADestroy @oSmtp
    

但是,此方法需要服务器地址。

我应该输入的地址是什么?电子邮件服务器?或者数据库服务器? 我只看到它在互联网上使用“localhost”。但这对我不起作用。

  1. 使用 CDONTS.NewMail

    CREATE PROCEDURE [dbo].[SendEmail] 
        @From varchar(100),
        @To varchar(100),
        @Subject varchar(100),
        @Body varchar(4000),
        @CC varchar(100) = null,
        @BCC varchar(100) = null
    AS
        Declare @MailID int
        Declare @hr int
        Declare @result int
    
        EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT
        EXEC @hr = sp_OASetProperty @MailID, 'From',@From
        EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body
        EXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCC
        EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC
        EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject
        EXEC @hr = sp_OASetProperty @MailID, 'To', @To
        EXEC @hr = sp_OAMethod @MailID, 'Send', @result OUT
        EXEC @hr = sp_OADestroy @MailID
        select @result
    

这个不需要服务器地址,但它也不起作用。

任何人都可以更详细地解释这些以及我应该做什么吗?

非常感谢!!!

最佳答案

Forget that, use the send email capabilities built-in on SQL Server 。事情并没有变得更容易。

通过向导配置它后,您可以简单地在您的进程中执行此操作,如链接的教程所示:

USE msdb
GO
EXEC sp_send_dbmail @profile_name='PinalProfile',
@recipients='test@Example.com',
@subject='Test message',
@body='This is the body of the test message.'

关于sql-server - SQL Server : send email,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265494/

相关文章:

sql - 从从 SSRS 导出到 Excel 中删除附加列

sql - 优化 SQL Server 聚合查询

c# - 如何将空值从 TextBox 插入到整数字段

sql - 比较两个 SQL Server 数据库(架构和数据)的最佳工具是什么?

SQL Server 索引使用统计

vba - 用于从 Outlook 保存电子邮件的宏 - 发件人姓名查询

xml - 如何验证 xml 模式中的电子邮件 ID

java - 如何使用gmail smtp发送邮件Spring实现?

html - Sendmail插入!电子邮件中间 990 个字符后的符号

android - 在android : javax. mail.messagingexception could not connect to smtp host异常中使用smtp从我们自己的域发送邮件