@H_502_1@我想使用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,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 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.它没有变得容易.
通过向导进行配置后,您可以在procs中执行此操作,如链接教程中所示:
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.'