2009-10-26 7 views
0

en double de: Automated SMTP (not MAPI) emails using SQL Server Job SchedulerEnvoi de courrier utilisant SQL Server 2000


Je veux envoyer des messages en utilisant une procédure stockée en utilisant SQL Server 2000 à l'aide de composants Windows smtp. Je ne veux pas de composant tiers.Mon nom de serveur SMTP = 'mail.met.net'.Comment envoyer du courrier en utilisant le serveur sql 2000?

CREATE PROCEDURE [dbo].[sp_send_mail] 
    @from varchar(500) , 
    @password varchar(500) , 
    @to varchar(500) , 
    @subject varchar(500), 
    @body varchar(4000) , 
    @bodytype varchar(10), 
    @output_mesg varchar(10) output, 
    @output_desc varchar(1000) output 
AS 
DECLARE @imsg int 
DECLARE @hr int 
DECLARE @source varchar(255) 
DECLARE @description varchar(500) 

EXEC @hr = sp_oacreate 'cdo.message', @imsg out 

--SendUsing Specifies Whether to send using port (2) or using pickup directory (1) 
EXEC @hr = sp_oasetproperty @imsg, 
'configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").value','2' 

--SMTP Server 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").value', 
    'mail.met.net' 

--UserName 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusername").value', 
    @from 

--Password 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").value', 
    @password 

--UseSSL 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl").value', 
    'True' 

--PORT 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport").value', 
    '465' 

--Requires Aunthentication None(0)/Basic(1) 
EXEC @hr = sp_oasetproperty @imsg, 
    'configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").value', 
    '1' 

EXEC @hr = sp_oamethod @imsg, 'configuration.fields.update', null 
EXEC @hr = sp_oasetproperty @imsg, 'to', @to 
EXEC @hr = sp_oasetproperty @imsg, 'from', @from 
EXEC @hr = sp_oasetproperty @imsg, 'subject', @subject 

-- if you are using html e-mail, use 'htmlbody' instead of 'textbody'. 

EXEC @hr = sp_oasetproperty @imsg, @bodytype, @body 
EXEC @hr = sp_oamethod @imsg, 'send', null 

SET @output_mesg = 'Success' 

-- sample error handling. 
IF @hr <>0 
SELECT @hr 
BEGIN 
    EXEC @hr = sp_oageterrorinfo null, @source out, @description out 
    IF @hr = 0 
    BEGIN 
    --set @output_desc = ' source: ' + @source 
    set @output_desc = @description 
    END 
ELSE 
BEGIN 
    SET @output_desc = ' sp_oageterrorinfo failed' 
END 
IF not @output_desc is NULL 
    SET @output_mesg = 'Error' 
END 
EXEC @hr = sp_oadestroy @imsg 
GO 

Répondre

0

Avez-vous déjà essayé d'utiliser CDO? Vous ne devez pas installer quoi que ce soit d'autre Voici un exemple de DTS ActiveX, vous pouvez le convertir en T-SQL avec sp_OAMethod, etc:

'********************************************************************** 
' Visual Basic ActiveX Script 
'************************************************************************ 

Function Main() 
    Set objMessage = CreateObject("CDO.Message") 
    objMessage.Subject = "Testing" 
    objMessage.From = "email" 
    objMessage.To = "email" 
    objMessage.ReplyTo = "email" 
    objMessage.TextBody = "Sample Text" 
    objMessage.AddAttachment "Attachment File" 

    objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

    'Name or IP of Remote SMTP Server 
objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTPServer" 

    'Server port (typically 25) 
objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 

    objMessage.Configuration.Fields.Update 

    objMessage.Send 
    Main = DTSTaskExecResult_Success 
End Function