2 de noviembre de 2005

Email y VFP: Parte 1e (Shell)

Artículo original: Email and VFP: Part 1e (Shell)
http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,0041d75b-ce37-4493-aac9-0db82b7317d5.aspx 
Autor: Craig Boyd
Traducido por: Ana María Bisbé York

Puede enviar una URL Mailto como el comando ShellExecute para facilitar el envío de correo electrónico en VFP. Debe observar que la línea de comando (URL) está limitada a 2048 bytes (sin embargo en mi sistema no podría crear una mayor de 2020 bytes) y no hay facilidades para adjuntar ficheros utilizando este método. Tiene por una parte estas limitaciones; pero es una solución que se logra en entorno de desarrollo.

*******************************
*!* Ejemplo de utilización de SendViaShell
*******************************
LOCAL lcTo, lcSubject, lcBody, lcCC, lcBCC, lcErrReturn
lcTo = "alguien@algundominio.com"
lcSubject = "Ha intentado enviar un email con VFP?"
lcBody = "Quiero hacerle saber que VFP es muy versátil" + CHR(13) + "y hay muchas formas de enviar un email."
lcCC = "otro@otrodominio.com"
lcBCC = "mijefe@dominiodeljefe.com"
SendViaShell(@lcErrReturn, lcTo, lcSubject, lcBody, lcCC, lcBCC)
IF EMPTY(lcErrReturn)
  MESSAGEBOX("'" + lcSubject + "' se envió satisfactoriamente.", 64, "Enviar email vía Shell")
ELSE
  MESSAGEBOX("'" + lcSubject + "'falló al enviar. Causa:" + CHR(13) + lcErrReturn, 64, ;
    "Enviar email vía Shell")
ENDIF

*******************************************
PROCEDURE SendViaShell(tcReturn, tcTo, tcSubject, tcBody, tcCC, tcBCC)
*******************************************
DECLARE INTEGER ShellExecute IN shell32.DLL ;
  INTEGER hwndWin, STRING cOperation, STRING cFile, ;
  STRING cParameters, STRING cDirectory, INTEGER nShowWin
  LOCAL lcCommand, lcCRLF

TRY
  lcCRLF = "%0D%0A"
  lcCommand = "mailto:" + tcTo + "?Subject=" + tcSubject + "&Body=" + STRTRAN(tcBody, CHR(13), lcCRLF)
  IF TYPE("tcCC") = "C"
    lcCommand = lcCommand + "&CC=" + tcCC
  ENDIF
  IF TYPE("tcBCC") = "C"
    lcCommand = lcCommand + "&BCC=" + tcBCC
  ENDIF
  IF LEN(lcCommand) > 2020 && debía ser 2048, pero no en mi sistema
    THROW "El comando Mailto está limitado a 2048 bytes"
  ENDIF
  ShellExecute(0, "open", lcCommand, "", "", 1)
CATCH TO loError
  tcReturn = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
    [LineNo: ] + STR(loError.LINENO) + CHR(13) + ;
    [Message: ] + loError.MESSAGE + CHR(13) + ;
    [Procedure: ] + loError.PROCEDURE + CHR(13) + ;
    [Details: ] + loError.DETAILS + CHR(13) + ;
    [StackLevel: ] + STR(loError.STACKLEVEL) + CHR(13) + ;
    [LineContents: ] + loError.LINECONTENTS
FINALLY
  CLEAR DLLS "ShellExecute"
ENDTRY
ENDPROC

No hay comentarios. :

Publicar un comentario