Enviar correo con SQL SERVER (sin SQLMail)

Enviar correos desde SQL SERVER 2000 sin utilizar SQLMail es posible. Se logra utilizando CDONTS.

Lo que tenemos que hacer, es crear un objeto CDO.Message, confirgurar las propiedades tal y como lo haríamos si lo fueramos a utilizar desde una página ASP y enviar el mensaje. El siguiente codigo fuente comentarizado detalla el proceso de configuración y envío.

*** Nota: Tenemos la limitante de CDONTS, máximo 4000 caracteres en el mensaje.

[SQL]
CREATE PROCEDURE Usp_enviarcorreo (@De VARCHAR(100),
@Para VARCHAR(100),
@Titulo VARCHAR(100),
@Mensaje VARCHAR(4000),
@TipoMensaje VARCHAR(50)
— ‘HTMLBody’ ó ‘TextBody’
)
AS
DECLARE @ObjMensaje INT,
@RC INT,
@Fuente VARCHAR(255),
@Descripcion VARCHAR(500),
@MsjSalida VARCHAR(1000),
@Servidor VARCHAR(100),
@Puerto VARCHAR(10),
@Autenticar CHAR(1),
@Usuario VARCHAR(100),
@Password VARCHAR(100)

— Aqui ahi que cambiar los valores por los reales de la cuenta a usar
SET @Autenticar = ‘1’ — Manda a autentificarse con una cuenta y password
SET @Servidor = ‘TuServidor’ — Nombre de host o IP
SET @Usuario = ‘TuUsuario’
— Nombre de usuario, en los servidores POP puede ser la direccion de correo completa
SET @Password = ‘TuPassword’– Password de la cuenta de correo
SET @Puerto = ‘TuPuerto’
— Puerto de correo, normalmente es el 25, aunque esto puede cambiar dependiendo del ISP
— Crear el objeto CDO.Message
EXEC @RC = Sp_oacreate
‘CDO.Message’,
@ObjMensaje out

— Configurar el SMTP remoto
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/sendusing”).Value’
,
‘2’

— Set: Servidor
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/smtpserver”).Value’
,
@Servidor

— Set: Puerto
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/smtpserverport”).Value’
,
@Puerto

— Set: Autenticacion
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate”).Value’
,
@Autenticar

— Set: Usuario
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/sendusername”).Value’
,
@Usuario

— Set: Password
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Configuration.fields(“http://schemas.microsoft.com/cdo/configuration/sendpassword”).Value’
,
@Password

— Guardar cambios
EXEC @RC = Sp_oamethod
@ObjMensaje,
‘Configuration.Fields.Update’,
NULL

— Parametros del correo:
— Para:
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘To’,
@Para

— De:
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘From’,
@De

— Titulo:
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
‘Subject’,
@Titulo

— Tipo de mensaje y mensaje:
EXEC @RC = Sp_oasetproperty
@ObjMensaje,
@TipoMensaje,
@Mensaje

— Enviar el correo:
EXEC @RC = Sp_oamethod
@ObjMensaje,
‘Send’,
NULL

— Obtener el mensaje de salida, tanto por éxito como por error.
IF ( @RC = 0 )
BEGIN
EXEC @RC = Sp_oageterrorinfo
NULL,
@Fuente out,
@Descripcion out

IF ( @RC = 0 )
BEGIN
SET @MsjSalida = ‘Error enviando el mensaje, Fuente:’
+ @Fuente + ‘, Descripcion: ‘ + @Descripcion
END
ELSE
BEGIN
SET @MsjSalida =
‘Error enviando el mensaje. Error obteniendo información de la falla’
END
END
ELSE
BEGIN
SET @MsjSalida = ‘Envío realizado’
END

— Limpiar el objeto
EXEC @RC = Sp_oadestroy
@ObjMensaje

— Mostrar el mensaje
SELECT @MsjSalida

go
[/SQL]

No debes olvidar cambiar los valores de servidor, usuarios, password y puerto por los de la cuenta que desees usar. Nos leemos en la próxima entrega. Happy Mailing.

Related Posts

CURRENT_IDENT y RESEED en Sql Server Compact Edition

admin

April 21, 2018

SQL SERVER

No Comment

Sql Server Compact Edition no cuenta con funciones como RESEED o CURRENT_IDENT, así que tenemos que hechar mano de consultas a la información de esquema y de alteración de tablas. Como sustituto a IDENT_CURRENT tenemos: [sql] SELECT AUTOINC_NEXT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘MiTabla’ AND COLUMN_NAME = ‘MiColumna’ [/sql] Y como sustituto a RESEED tenemos […]

Read More

Conexión a Sql Server con Php 5.6 linux CentOS 6

admin

March 28, 2016

PHP, SQL SERVER

No Comment

Para conectarse a Sql Server desde linux utilizamos este comando para instalar el driver: [bash] $ sudo yum install -y php-mssql [/bash] Por ejemplo, para php5.6: [bash] $ sudo yum install -y php56w-mssql [/bash] Esta instrucción instala freetds, una colección de librerias para conectarnos con Sql Server desde linux. Con esta librería no solo podemos […]

Read More

2 Comments

  • Jorge Ricardo on June 10, 2010

    gracias,,, muy buen aporte, me salvastes,,,mas q un agradecimiento un verdadero gesto de gratitud

  • LoboSoft on January 24, 2012

    Muchas gracias, muy bueno el aporte, solo tengo una duda, el correo me lo envia, pero estoy buscando la forma que en lugar de un mensaje escrito sea el resultado de una consulta, es decir tengo un query que me devuelve “n” registros y quiero mandar ese resultado de la consulta como mensaje. Al realizarlo envia el mensaje pero llega el mensaje con texto “0”.

    Alguna observación al respecto..

    Gracias…

Leave a Reply

Your email address will not be published. Required fields are marked *