The winner is ...
Como indico arriba, esto es "mi experiencia y elección personal", obviamente no digo que sea "la mejor", ni digo tampoco "la peor", por lo tanto no entraré en comparación con otras herramientas, solo hablaré de CDO.
¿Qué es CDO?
CDO (Collaboration Data Objects) es un componente COM (Component Object Model) que simplifica la escritura de código para crear y manipular mensajes de Internet y es parte integrante (Cdosys.dll) de los sistemas operativos Windows 2000 y superiores, siendo esta la primer gran ventaja, ya que no necesitamos descargar, comprar, ni licenciar, ninguna otra herramienta extra. CDO no necesita que tengamos un servidor SMTP local, solo necesita acceso a la Web, a algún servidor SMTP que nos permita enviar los mensajes de correo electrónico.
Usando VFP
Otra ventaja adicional, es que se puede utilizar CDO con lenguajes que soporten COM y Automation, y Visual FoxPro lo soporta. A continuación un sencillo código para enviar un mensaje de correo electrónico con CDO desde VFP. Recuerde configurar correctamente el nombre del servidor SMTP, el puerto SMTP, el nombre de usuario y contraseña.
loCfg = CREATEOBJECT("CDO.Configuration") WITH loCfg.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@mail.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Update ENDWITH loMsg = CREATEOBJECT ("CDO.Message") WITH loMsg .Configuration = loCfg .From = "user@mail.com" .To = "user1@mail.com.ar" .Subject = "Prueba desde VFP" .TextBody = "Este es un mensaje de prueba con CDO desde Visual FoxPro." .Send() ENDWITH
Adjuntando archivos en nuestros mensajes
Para enviar archivos adjuntos en un mensaje de correo electrónico, solo debemos llamar al método
AddAttachment()
del objeto Message, tantas veces como archivos deseamos adjuntar, con la ruta y el nombre del archivo como parámetros: WITH loMsg .AddAttachment("C:\Imagenes\Foto1.jpg") .AddAttachment("C:\Imagenes\Foto2.jpg") .AddAttachment("C:\Imagenes\Foto3.jpg") ENDWITH
Autenficación y cifrado SSL
Algunos servidores SMTP, necesitan autentificación y cifrado SSL para iniciar sesión. Para ello debemos configurar las propiedadades
smtpauthenticate
y smtpusessl
del objeto Configuration con el valor .T.
.WITH loCfg.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = .T. .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = .T. ENDWITH
Mensajes a múltiples destinatarios
Para enviar el mensaje de correo a mas de un destinatario, solo debemos separar las direcciones de correos electrónicos, con el caracter "," (coma) en la propiedad
To
. También podemos agregar una copia para otro destinatario, como así también una copia oculta, configurando las propiedades Cc
y Bcc
respectivamente.WITH loMsg .To = "user1@mail.com, user2@mail.com" .Cc = "user3@mail.com" .Bcc = "user4@mail.com" ENDWITHPodemos hacer que aparezca el nombre completo del remitente y/o del destinatario, anteponiendo el nombre a la dirección de correo electrónico, y encerrando ésta última entre "<" y ">"
WITH loMsg .From = "Jose Fox <jose@fox.org>" .To = "Usuario Uno <user1@mail.com>, Usuario Dos <user2@mail.com>" ENDWITH
Mensajes con formato HTML
Con CDO muy fácilmente se puede enviar mensajes de correo electrónico con formato HTML, solamente configurando la propiedad
HTMLBody
con código HTML válido, en lugar de configurar la propiedad TextBody
que es válida para los mensajes con texto sin formato.WITH loMsg .HTMLBody = "<p>Este es un texto HTML con <b>negritas</b> o con <i>cursivas</i>.</p>" ENDWITHEsta propiedad la podemos configurar con el contenido de un archivo HTML con la función
FILETOSTR()
como se muestra a continuación.WITH loMsg .HTMLBody = FILETOSTR("C:\Archivo.htm") ENDWITHMas adelante veremos otra manera de dar formato HTML a un mensaje de correo electrónico, a partir de un archivo HTML ubicado en el disco local o la Web.