Hola invitado         31 Jul, 2010 - 07:24
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox

Una forma simple de enviar correo electrónico desde una aplicación Visual FoxPro

(874 palabras totales en este texto)
(17403 lecturas)  Versión imprimible

Una forma simple de enviar correo electrónico desde una aplicación Visual FoxPro

Artículo original: An easy way to send email from a Visual FoxPro application
http://www.ml-consult.co.uk/foxst-22.htm
Autor: Mike Lewis (http://www.ml-consult.co.uk)
Traducido por: Ana María Bisbé York (amby@telefonica.net)
Para: PortalFox (http://www.portalfox.com)


Utilice esta sencilla técnica para ayudar a sus usuarios a componer y enviar mensajes de correo electrónico.

El tema más popular en nuestro Curso de Visual FoxPro Avanzado es el envío y recepción de ficheros automáticamente desde una aplicación VFP. Mostramos como hacerlo utilizando Microsoft Outlook como un servidor de Automation ActiveX. Aunque trabaja bien, la técnica es a veces complicada, y puede utilizarla solamente si el usuario tiene Outlook instalado.

En este artículo, describiremos un proceder mucho más sencillo - uno que trabaja con cualquier cliente de correo dócil MAPI (incluyendo Outlook Express y Nestcape Messenger). Esto no es tan flexible como el método con ActiveX Automation; pero tiene la ventaja de requerir  de un par de líneas de código solamente.

El truco es enlazar "ShellExecute" a un mailto. Si nunca ha utilizado la función ShellExecute(), vale la pena dedicar un momento para conocerla. No es una función VFP; pero es parte del Windows Shell. Antes de utilizarla, la debe declarar de esta forma:

DECLARE INTEGER ShellExecute IN shell32.dll ;
   INTEGER hndWin, STRING cAction, STRING cFileName, ; 
  STRING cParams, STRING cDir, INTEGER nShowWin

Puede colocar este código en cualquier lugar de su aplicación, antes de que cree el mensaje de correo. (Vea en el comando anterior, que .ShellExecute es sensible a mayúsculas y minúsculas.)

Entonces, ¿qué es lo que hace?

Esencialmente, ShellExecute() permite "ejecutar" cualquier programa, documento o acceso directo. Lo más sencillo, puede ser utilizado para lanzar una aplicación externa. Por ejemplo, este comando puede lanzar el bloc de notas.

ShellExecute(0,"open","Notepad.Exe","","",1)

Alternativamente, puede utilizar el siguiente código para lanzar el Bloc de Notas y abrir un archivo "Readme.txt".

ShellExecute(0,"open","Readme.txt","","",1)

Lo bueno de esto está en que no tiene que conocer qué aplicación es registrada para abrir un tipo de documento específico en el sistema del usuario. Si el usuario no tiene Word instalado, lo anterior llamaría en su lugar al Bloc de tareas, ya que también procesa archivos RTF. Sin embargo, si el usuario no tiene ninguna aplicación asociada con archivos RTFs, el comando va a dar error.

El segundo parámetro de ShellExecute() permite especificar la acción que desea ejecutar. Para cambiarlo por "imprimir", por ejemplo, puede imprimir el documento en lugar de abrirlo para editarlo. De forma similar, el siguiente código ejecuta un archivo de sonido (utilizando Windows Media Player o cualquier otra aplicación asociada con la extensión WAV):

ShellExecute(0,"play","ringin.wav","","",1)

Otra posibilidad:

ShellExecute(0,"open","www.microsoft.com","","",1)

Esto lanzará el explorador Web predeterminado por el usuario y navegará al sitio específico.

Para más ejemplos sobre esta versátil función, vea nuestro artículo,Conociendo ShellExecute.

¿Y qué hay sobre el mensaje de correo?

Regresando a nuestro asunto original, Para crear un mensaje de correo, todo lo que tenemos que hacer es SellExecute un enlace mailto. En su forma más sencilla, el enlace se realiza de esta forma:

mailto:john@mycompany.com

Entonces, el siguiente código va a abrir una ventana para componer el mensaje el el cliente de correo predeterminado por el usuario, con la línea Para rellena:

lcMail = "mailto:john@mycompany.com" 
ShellExecute(0,"open",lcMail,"","",1)

Avanzando un poco más, puede especificar los siguientes parámetros al enlace mailto:

CC = Con copia
BCC = Con copia oculta
Subject = Asunto
Body = Texto del mensaje

Coloque un signo de interrogación antes del primer paréntesis (justo después de la dirección de correo). Utilice ampersands para separar los siguientes parámetros, como en este ejemplo:

lcMail = "mailto:john@mycompany.com"+ ;
  "?CC= boss@mycompany.com&Subject= Meet for lunch"+ ;
  "&Body= Please join me for a sandwich at noon." 
ShellExecute(0,"open",lcMail,"","",1)

Esto va a mostrar la ventana de composición del mensaje que se observa en la figura 1. Como puede ver, ya están rellenos los datos To (Para), CC (con copia) y Subject (Asunto), así como el texto del mensaje. Todo lo que el usuario tiene que hacer es oprimir el botón Send (Enviar).

Figura 1: Utilice ShellExecute() para hacer saltar esta ventana de mensaje.

Si desea incluir una línea de ruptura en el cuerpo del mensaje, inserte el carácter nueva línea en "formato URL", esto es como "%0A" (sin las comillas). Por ejemplo:

lcMail = "mailto:john@mycompany.com"+ ;
  "?CC= boss@mycompany.com&Subject= Meet for lunch"+ ;
  "&Body= Please join me for sandwich.%0AWe can meet at noon." 
ShellExecute(0,"open",lcMail,"","",1)

Limitaciones

Esta técnica tiene obviamente muchas limitaciones. Primero, no es adecuada para la creación de mensajes muy largos, porque el máximo para el enlace mailto es de 2,047 caracteres. No puede ser utilizado para mensajes con formato, ni es posible adjuntar archivos al mensaje. Lo más serio, tiene que confiar al usuario el envío del mensajes. No lo puede hacer por programa, ni puede evitar que el usuario cancele, en lugar de enviar el mensaje.

Por otro lado, si todo lo que necesita es una sencilla forma de ayudar al usuario a componer y enviar un mensaje sin formato, esta técnica trabaja extremadamente bien. Puede utilizarla por ejemplo, para crear un mensaje que confirme una orden o un mensaje de búsqueda de cliente pendiente de un pago. Es especialmente útil si desea permitir al usuario modificar el texto del mensaje antes de oprimir el botón Enviar.

Mike Lewis Consultants Ltd. Febrero 2002. Revisado Abril 2005.





Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.