我想使用 SQL Server 发送电子邮件,并从互联网上找到了两种可能的方式:
使用 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”。但这对我不起作用。
使用 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/