7 de agosto de 2006

Como enviar un email desde VFP sin MAPI

Este es siempre un tema recurrente en el grupo, y como he respondido varias consultas privadas sobre este mismo tema, creo que es hora de hacerlo un poco mas públicamente.

Una forma de enviar un email desde VFP sin lidiar con los problemas de MAPI, Outlook, OE, etc, es usar un componente de 3ros. Existe uno sumamente funcional y gratuito llamado w3JMail, de la empresa DIMAC (http://www.dimac.net/), el cual funciona perfecto en VFP y no requiere de ningún otro componente instalado.

El componente puede ser descargado desde esta dirección:

http://www.dimac.net/FreeDownloads/v3DlStart.asp?ProductID=5

La ayuda la encontrarán aquí:

http://www.dimac.net/default2.asp?M=Products/MenuCOM.asp&P=Products/w3JMail/start.htm

Y adicionalmente les anexo un pequeño ejemplo de como enviar un email con attachments desde VFP usando el w3JMail.

* Ejemplo de como enviar un email con
* adjuntos usando el componente
* w3JMail de DIMAC
*
* Por: Victor Espina
*
CLOSE ALL
CLEAR ALL
CLEAR
*
*-- Se instancia el componente
*
LOCAL oEmail
oEmail = CREATEOBJECT("JMail.Message")
*
*-- Se activa el logging interno del componente
*   y se desactiva la notificacion de errores
*
oEmail.Logging = .T.
oEmail.Silent = .T.
*
*-- Remitente
*
oEmail.From = "remitente@server.com"
oEmail.FromName = "Nombre del Remitente"
*
*-- Destinatario(s). El 2do parametro es opcional. Se puede
*   invocar el metodo AddRecipient las veces que sea necesario.
*
oEmail.AddRecipient("destinatario@server.com","Nombre del Destinatario")
*
*-- Asunto
*
oEmail.Subject = "Email de prueba con w3JMail"
*
*-- Texto. La propiedad Body es de lectura/escritura. Adicionalmente
*   se puede usar el metodo AppendText() para anadir texto al final
*   del mensaje.
*
*   Para enviar un mensaje en formato HTML, use la propiedad HTMLBody
*   y/o el metodo AppendHTML()
*
oEmail.Body = "Este es un email de prueba enviado programáticamente " + ;
  "usando el componente w3JMail de DIMAC."
*
*-- Adjuntos. Se puede invocar el metodo AddAttachment() tantas veces
*   como sea necesario. El 2do parámetro indica si el archivo adjunto
*   sera incluido dentro del mensaje (in-line Attachment) o no.
*
oEmail.AddAttachment(FULLPATH("mail1.prg"),.F.)
*
*-- Se envia el mensaje. El metodo Send() devuelve .T. si se envio
*   el mensaje correctamente o .F. en caso de un error. La propiedad
*   Log contiene el log del problema ocurrio (si Logging = .T.)
*
*   El metodo Send() acepta como parametro una lista de uno o mas
*   servidores SMTP separados por coma. Es posible indicar un
*   usuario/pwd para cada servidor, usando la sintaxis:
*
*   user:pwd@server
*
LOCAL lOk
lOk = oEmail.SEND("smtp.server.com")
IF lOk
  MESSAGEBOX("Mensaje enviado!")
ELSE
  MESSAGEBOX(eMail.Log)
ENDIF
*

Saludos.

Victor Espina

No hay comentarios. :

Publicar un comentario