1 de agosto de 2005

Email y VFP: Parte 1b (Outlook)

Artículo original: Email and VFP: Part 1b (Outlook)
http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,fb9e9267-3642-4176-94ea-9239691b61fa.aspx
Autor: Craig Boyd
Traducido por: Ana María Bisbé York


Si puede contar conque sus usuarios utilizan Outlook como su cliente de correo (que no emplean Eudora u otro), entonces el siguiente código es muy cómodo. Enviar correo desde Automatización Outlook nos brinda el acceso a varias posibilidades que vienen con el objeto MailItem. He tocado algunas de ellas; pero para más información, se puede referir a la información del objeto MailItem en MSDN (http://msdn.microsoft.com/library/en-us/vbaol11/html/olobjMailItem_HV05247822.asp)
*******************************
*!* Ejemplo de utilización de SendViaOutlook
*******************************
#DEFINE olImportanceLow 0
#DEFINE olImportanceNormal 1
#DEFINE olImportanceHigh 2
DIMENSION aryAttach(2)
aryAttach(1) = "C:\attachment1.txt" &&  cambie a un archivo real que existe en su PC
aryAttach(2) = "C:\attachment2.zip" &&  cambie a un archivo real que existe en su PC
LOCAL lcTo, lcSubject, lcBody, lcCC, lcBCC, llHTMLFormat, llOpenEmail, lcErrReturn
lcTo = "alguien@algundominio.com"
lcSubject = "Hey, ¿Ha intentado enviar un email con VFP?"
*!* Enviando el cuerpo en formato HTML 
llHTMLFormat = .T.
lcBody = "<a href='http://www.sweetpotatosoftware.com/SPSBlog/default.aspx'>" + ;
  "Hey, ¿Ha intentado enviar un email con VFP?" + ;
  "</a>"
lcCC = "otro@otrodominio.com"
lcBCC = "mijefe@dominiodeljefe.com"
*!* para enviar correo automáticamente haga llOpenEmail igual a .F.
llOpenEmail = .T. && Si el correo se abrió o no, en el cliente de correo Outlook
SendViaOutlook(@lcErrReturn, lcTo, lcSubject, lcBody, @aryAttach, lcCC, lcBCC, llHTMLFormat, olImportanceHigh, llOpenEmail)
IF EMPTY(lcErrReturn)
  MESSAGEBOX("'" + lcSubject + "'" + IIF(llOpenEmail, " abierto ", " enviado ") + "satisfactoriamente.", ;
    64, "Envía email via Outlook")
ELSE
  MESSAGEBOX("'" + lcSubject + "' falló al enviar. Causa:"  + CHR(13) + lcErrReturn, 64, "Envía email via Outlook")
ENDIF

*******************************************
PROCEDURE SendViaOutlook(tcReturn, tcTo, tcSubject, tcBody, taFiles, tcCC, tcBCC, tlHTMLFormat, tnImportance, tlOpenEmail)
*******************************************
LOCAL loOutlook, loItem, lnCountAttachments
TRY
  loOutlook = CREATEOBJECT("outlook.application")
  loItem = loOutlook.CreateItem(0)
  WITH loItem
    .Subject = tcSubject
    .TO = tcTo
    IF tlHTMLFormat
      .HTMLBody = tcBody
    ELSE
      .Body = tcBody
    ENDIF
    IF TYPE("tcCC") = "C"
      .CC = tcCC
    ENDIF
    IF TYPE("tcBCC") = "C"
      .BCC = tcBCC
    ENDIF
    IF TYPE("tnImportance") != "N"
      tnImportance = 1 && importancia normal 
    ENDIF
    .Importance = tnImportance
    IF TYPE("tafiles",1) = "A"
      FOR lnCountAttachments = 1 TO ALEN(taFiles)
        .Attachments.ADD(taFiles(lnCountAttachments))
      ENDFOR
    ENDIF
    IF tlOpenEmail
      .DISPLAY()
    ELSE
      .SEND()
    ENDIF
  ENDWITH
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
  RELEASE oOutlook, oItem
  STORE .NULL. TO oOutlook, oItem
ENDTRY
ENDPROC

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.