SujataJK Ответов: 2

Как отправить почту из хранимой процедуры с помощью SQL server 2008


Привет ,
Здесь я хочу отправить с помощью хранимой процедуры в sql server 2008 .

Я получил код из сети это так

CREATE PROCEDURE [dbo].[sp_send_mail]
		@from 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', 
  'smtp.gmail.com' 

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

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

--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


Что я уже пробовал:

Теперь я хочу выполнить этот код.
я уже пробовал вот так
DECLARE @out_desc varchar(1000),
		@out_mesg varchar(10)

EXEC sp_send_mail 'sender@gmail.com',
	'receiver@gmail.com',
	'Hello', 
	'This is s Test Mail',
	'htmlbody', @output_mesg = @out_mesg output, @output_desc = @out_desc output

PRINT @out_mesg
PRINT @out_desc



it gives me error like this

-
-2147220973

и сообщение об ошибке, как
(1 row(s) affected)
Error
The transport failed to connect to the server.


Пожалуйста, дайте мне любую идею

2 Ответов

Рейтинг:
1

Member 14912419

Он работает, когда я изменил smtpserverport на 25


Рейтинг:
0

debasish mishra

Проверьте, позволяют ли ваши настройки google отправлять электронную почту с помощью любого другого протокола smtp
Читать https://support.google.com/accounts/answer/6010255?hl=en
и идите к нему. https://www.google.com/settings/security/lesssecureapps и измените настройки на "активировано"