Enviar correo con SQL SERVER (sin SQLMail)

admin

April 1, 2009

SQL SERVER

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

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: Y como sustituto a RESEED tenemos que alterar la tabla: No es tan complejo ciertamente, y útil para lidiar con […]

Read More

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

admin

March 28, 2016

PHP, SQL SERVER

Para conectarse a Sql Server desde linux utilizamos este comando para instalar el driver: Por ejemplo, para php5.6: Esta instrucción instala freetds, una colección de librerias para conectarnos con Sql Server desde linux. Con esta librería no solo podemos conectarnos desde Php, sino desde la linea de comandos, con el programa tsql. Después de instalar, […]

Read More