Página 1 de 1

Enviar email com o objeto CDO.Message

Enviado: 05 Fev 2016 18:41
por asimoes
Pessoal,

Tem como enviar email usando o objeto CDO.Message para mais de 1 destinatário? em um único envio?

Enviar email com o objeto CDO.Message

Enviado: 05 Fev 2016 19:26
por sygecom
Chefe,
Eu uso conforme abaixo, veja se da para entender:

Código: Selecionar todos

*************************************************************************************
STATIC FUNCTION ENVIA_MAIL(oCfg,cFrom,cDest,aFiles,cSubject,cMsg,aCC,aBCC,lEMAIL_CONF,lHTML,lMOSTRAMSG)
*************************************************************************************
local aTo := {}, i:=0, X:=0
local lRet := .f.
local nEle, oError, oMsg

aTo      := { cDest } //--> PARA
nEle := 1
for i:=1 to len(aTo) // varios destinatarios
    TRY
      oMsg := xhb_CreateObject("CDO.Message")
        WITH OBJECT oMsg
             :Configuration = oCfg
             //:BodyPart:Charset := "iso-8859-2" // "iso-8859-1" "utf-8"
             :From = cFrom
             :To = aTo[i]
             :Cc = aCC
             :BCC = aBCC
             :Subject = cSubject
             if lHTML
                :HTMLBody  = cMsg
             else
                :TextBody = cMsg
             endif
             For x := 1 To Len( aFiles )
                 :AddAttachment(AllTrim(aFiles[x]))
             Next
             IF lEMAIL_CONF
                :Fields( "urn:schemas:mailheader:disposition-notification-to" ):Value := cFrom
                :Fields:update()
             ENDIF
             :Send()
        END WITH
        lRet := .t.
    CATCH oError
        IF lMOSTRAMSG
           ShowMsg( "Não Foi possível Enviar o e-Mail!"  + HB_OsNewLine() + ;
                    "Error: "     + Transform(oError:GenCode,   nil) + HB_OsNewLine() + ;
                    "SubC: "      + Transform(oError:SubCode,   nil) + HB_OsNewLine() + ;
                    "OSCode: "    + Transform(oError:OsCode,    nil) + HB_OsNewLine() + ;
                    "SubSystem: " + Transform(oError:SubSystem, nil) + HB_OsNewLine() + ;
                    "Mensaje: "   + oError:Description )
        ENDIF
        lRet := .f.
END
next
oMsg:=Nil
Return lRet

Enviar email com o objeto CDO.Message

Enviado: 05 Fev 2016 19:45
por asimoes
Leonardo,

Consegui, tem que colocar uma virgula para os destinatários veja no FOR EACH:

aTo := {"Dest1 <dest1@gmail.com>", "Des2 <dest2@gmail.com>"}
aCC := {"Dest1 <dest1@gmail.com>", "Des2 <dest2@gmail.com>"}

Código: Selecionar todos

LOCAL  oElemento, oElementoTo, oElementoCc, oElementoBCc
oMsg := win_OleCreateObject( "CDO.Message" )
WITH OBJECT oMsg
   :Configuration := oCfg
   :From          := cFrom
   FOR EACH oElementoTo IN aQuem
       cDestinatario += oElementoTo + IF(!oElementoTo:__enumIsLast(),",","")
   NEXT
   FOR EACH oElementoCc IN aCC
       cComCopia += oElementoCc + IF(!oElementoCc:__enumIsLast(),",","")
   NEXT
   :To            := cDestinatario
   :Cc            := cComCopia
   :Subject       := cSubject
   IF !Empty(cImagem)
      :AddRelatedBodyPart(hb_DirBase()+"img"+hb_PS()+cImagem, cImagem, 1)
      :Fields:Item("urn:schemas:mailheader:Content-ID"):Value          := "<"+cImagem+">"
      :Fields:Item("urn:schemas:mailheader:Content-Disposition"):Value := "inline"
      :Fields:Update()
   ENDIF
   :HTMLBody := cMsg + QuebraHTML + IF(!Empty(cImagem), cImagem1, "")
   FOR EACH oElemento IN aFiles 
       :AddAttachment(AllTrim(oElemento))
       hwg_DoEvents()
   NEXT
   :Fields("urn:schemas:mailheader:disposition-notification-to"):Value              := cFrom
   :Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := lAut
   :Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value       := lSSL
   :Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value       := cServerIp
   :Fields:update()
   :Send()
END WITH

Enviar email com o objeto CDO.Message

Enviado: 05 Fev 2016 20:02
por sygecom
Que nem diz o Eolo, CHIC.