Clipper On Line • Ver Tópico - Inserir uma imagem ao Corpo da Mensagem do Email
Página 1 de 4

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 17 Jan 2016 18:05
por asimoes
A dica é a seguinte:

Incluir uma imagem na mensagem do email usando o objeto CDO.Message
Na função Envia_Mail que é chamada dentro da Envia_Email, procurem por AddRelatedBodyPart

O nome da imagem tem que ser o mesmo definido na variável cImagem e no método AddRelatedBodyPart

O teste:
AzulHTML     := '<span style="color:#0000FF">'
VermelhoHTML := '<span style="color:#FF0000">'
QuebraHTML   := "<br>"
cImagem:='<img src="asaprev1.jpg" alt="Monitor AsaPrev">'

cMensagem:=AzulHTML    +"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+hb_DtoC(Date(),"DD/MM/YYYY")+QuebraHTML+;
                   VermelhoHTML+"Feito pelo Monitor AsaPrev."+QuebraHTML+;
                   cImagem
                         
Envia_Email({hb_DirBase()+"ASAPREV.NEW"},,cMensagem,.F.) //Envia email para mim informando que foi feito a atualização.


A função que eu envio email é esta:
Modifiquei algumas informações por motivo de segurança.

#include "error.ch"
#include "fileio.ch"

FUNCTION Envia_Email(aArquivo, cAssunto, cMensagem, lInformaEnvio)

LOCAL lOk := .T.

   hb_Default(@aArquivo, {})
   hb_Default(@cAssunto, "Log de atualiza‡Æo de sistema em: "+hb_DtoC(Date(),"DD/MM/YYYY"))
   hb_Default(@cMensagem, "Log de erro de sistema em: "+hb_DtoC(Date(),"DD/MM/YYYY"))
   hb_Default(@lInformaEnvio, .T.)
   
   aFiles    := aArquivo // pode ser uma matriz com vários endereços
   cSubject  := cAssunto
   aQuem     := "Alexandre Simäes <asimoesluz@gmail.com>"
   cMsg      := cMensagem
   cServerIp := "smtp.gmail.com" // servidor smtp
   cFrom     := "Sistema AsaPrev <xhbsistemas@gmail.com>"
   cUser     := "xhbsistemas@gmail.com"
   cPass     := "senha"
   vPORTSMTP := 465
   aCC       := "Alexandre Simäes <a_1964_luz@yahoo.com.br>" // caracteres entre aspas
   aBCC      := "" // caracteres entre aspas
   lConf     := .F.
   lSSL      := .T.
   
   lOk := Config_Mail(aFiles,;
                      cSubject,;
                      aQuem,;
                      cMsg,;
                      cServerIp,;
                      cFrom,;
                      cUser,;
                      cPass,;
                      vPORTSMTP,;
                      aCC,;
                      aBCC,;
                      lConf,;
                      lSSL,;
                      lInformaEnvio)

RETURN lOk

FUNCTION Config_Mail(aFiles, cSubject, aQuem, cMsg, cServerIp, cFrom, cUser, cPass, vPORTSMTP, aCC, aBCC, lConf, lSSL, lInformaEnvio)
LOCAL lRet
LOCAL oCfg, oErroMail
LOCAL lAut:=.T. //cdpar000->mauth
   hb_Default(@lInformaEnvio, .T.)
   TRY
      oCfg := WIN_OleCreateObject( "CDO.Configuration" )
      WITH OBJECT oCfg:Fields
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value:= cServerIp
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value:= vPORTSMTP
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value:= 2
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value:= lAut
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value:= lSSL
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value:= AllTrim(cUser)
           :Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value:= AllTrim(cPass)
           :Update()
      END WITH
      lRet:=.T.
   CATCH oErroMail
      IF lInformaEnvio
         hwg_MsgStop("Não foi possível enviar o e-mail!"                       +hb_EOL()+ ;
                     "Error: "     + Transform(oErroMail:GenCode,   nil) + ";" +hb_EOL()+ ;
                     "SubC: "      + Transform(oErroMail:SubCode,   nil) + ";" +hb_EOL()+ ;
                     "OSCode: "    + Transform(oErroMail:OsCode,    nil) + ";" +hb_EOL()+ ;
                     "SubSystem: " + Transform(oErroMail:SubSystem, nil) + ";" +hb_EOL()+ ;
                     "Mensagem: "  + oErroMail:Description, "Atenção",150,10000,2,.T.)
      ENDIF
      lRet := .F.
   END
   //--> FIM DAS CONFIGURAÇOES.
   IF lRet
      lRet := Envia_Mail(oCfg,;
                         cFrom,;
                         aQuem,;
                         aFiles,;
                         cSubject,;
                         cMsg,;
                         aCC,;
                         aBCC,;
                         lConf,;
                         lAut,;
                         lSSL,;
                         cServerIp,;
                         lInformaEnvio)
   ENDIF
RETURN lRet

FUNCTION Envia_Mail(oCfg, cFrom, cDest, aFiles, cSubject, cMsg, aCC, aBCC, vEmaiL_Conf, lAut, lSSL, cServerIp, lInformaEnvio)
LOCAL aTo
LOCAL lRet
LOCAL nEle, oErroMail

  hb_Default(@lInformaEnvio, .T.)

  aTo:= { cDest } //--> PARA
 
  nEle := 1

   FOR I:=1 TO Len(aTo)
      TRY
         IF lInformaEnvio
            MsgTroca("Aguarde, processando o envio do email.")
         ENDIF
         oMsg := WIN_OleCreateObject( "CDO.Message" )
         
         WITH OBJECT oMsg
              :Configuration = oCfg
              :From = cFrom
              :To = aTo[i]
              :Cc = aCC
              :BCC = aBCC
              :Subject = cSubject
              :AddRelatedBodyPart(hb_DirBase()+"img\asaprev1.jpg","asaprev1.jpg",1)
              :Fields:Item("urn:schemas:mailheader:Content-ID"):Value = "<asaprev1.jpg>"
              :Fields:Item("urn:schemas:mailheader:Content-Disposition"):Value = "inline"
              :Fields:Update()
              :HTMLBody = cMsg
                 
              FOR X := 1 TO Len( aFiles )
                 :AddAttachment(AllTrim(aFiles[x]))
                 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()
               hwg_DoEvents()
         END WITH
         IF lInformaEnvio
            MsgFim()
            hwg_MsgInfo("E-mail enviado com sucesso", "Atenção")
         ENDIF
         lRet:=.T.
      CATCH oErroMail
         IF lInformaEnvio
            MsgFim()
            hwg_MsgStop("Não foi possível enviar a mensagem: "+cSubject+hb_EOL()+;
                        "para o email: " + aTo[i]+"."                  +hb_EOL()+;
                        "Erro: " +oErroMail:Description , "Atenção")
         ENDIF
         lRet:=.F.
      END
   NEXT
   
   oCfg := Nil
   oMsg := Nil

RETURN lRet

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 17 Jan 2016 18:15
por asimoes
se a imagem for de uma URL:

cIm:='https://lh3.googleusercontent.com/-hKEPZr1m0UQ/VoJgF__dErI/AAAAAAAAA_A/PhW2yJu8oNM/s450-Ic42/anigif.gif'

cImagem:='<p><IMG SRC="&cIm" alt="Logo"></p>'

cMensagem:=AzulHTML +"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+hb_DtoC(Date(),"DD/MM/YYYY")+QuebraHTML+;
VermelhoHTML+"Feito pelo Monitor AsaPrev."+QuebraHTML + cImagem

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 07:40
por asimoes
O resultado é esse:
Screen Shot 01-18-16 at 08.39 AM.PNG
Imagem no Email

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 11:56
por fladimir
Aí sim hein ASIMOES....

Vou testar...

Vlw.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 13:52
por asimoes
Agora o exemplo usando tip_MailSend() (*)

(*) Estes exemplos foram testados com Harbour 3.4

Precisa ter estas dll´s na pasta do executável:

libeay32.dll
msvcr120.dll
ssleay32.dll

Precisa das libs:
hbssl.hbc
hbtip.hbc

/*
* Copyright 2009 Viktor Szakats (vszakats.net/harbour)
* www - http://harbour-project.org
*
* Gmail work with ssl on port 465 and with tls on port 587
* tls mode is fully automatic and require that ssl must be disabled at first (We will activate it on request after STARTTLS command)
*/
#include "hbcompat.ch"
#include "dbinfo.ch"
#include "fileio.ch"
#include "hbdyn.ch"
#include "simpleio.ch"

#require "hbssl"
#require "hbtip"

#if ! defined( __HBSCRIPT__HBSHELL )
   REQUEST __HBEXTERN__HBSSL__
#endif

PROCEDURE Main( cUser, cPassword, cAlias, cFrom, cTo, cCC, cHost )

LOCAL nPort
PUBLIC AzulHTML    :='<span style="color:#0000FF">'
PUBLIC VermelhoHTML:='<span style="color:#FF0000">'
PUBLIC QuebraHTML  :="<br>"

hb_default( @cUser , "usuario")
hb_default( @cPassword, "senha" )
hb_default( @cAlias , "Seu Apelido" )
hb_default( @cFrom , "seuemail@gmail.com")
hb_default( @cTo , {"emaildestino@gmail.com"} )
hb_default( @cCC , "comcopia@gmail.com" )
hb_default( @cHost , "smtp.gmail.com" )

cHost := Lower( cHost )

IF ! tip_SSL()
    hwg_MsgInfo("Error: Requires SSL support")
    RETURN
ENDIF

cIm := 'https://lh3.googleusercontent.com/-lJ9SOHOjv1Y/Vp0QG_sXorI/AAAAAAAABBs/PW7a4aIYjz8/s574-Ic42/screenshot.png'
//
cImagem:= '<p><IMG SRC="&cIm" alt="Logo"></p>'
cBody  := "<strong>"+AzulHTML   +"Log de confirma‡Æo de envio de email em: "+HB_DtoC(Date(),"DD/MM/YYYY") +;
            QuebraHTML+;
            VermelhoHTML+"Feito pelo pelo harbour."+"</strong>" +;
            QuebraHTML +;
            QuebraHTML +;
            "VersÆo: "+Version()+" "+hb_compiler() +;
            QuebraHTML +;
            cImagem + ;
            QuebraHTML
                 
cBodyTemp   := hb_GetEnv("TEMP")+hb_PS()+"BODY.HTML"
nFileHandle := fCreate(cBodyTemp)
                fWrite(nFileHandle,cBody)
                fClose(nFileHandle)

cSubJect  := "Assunto do email - MINGW - "+Version()+" "+hb_Compiler()     
aAnexo    := {hb_DirBase()+"teste.txt"}
nPriority := 3 //1=Alto, 3=Normal (padrão), 5=Low
cAlias    := cAlias +" <"+cFrom+"> "
lRead     := .T.
nPorta    := 465
lSSL      := (nPorta==465)

lRet  := tip_MailSend(cHost, ;
                       465, ;
                       cAlias, ;
                       cTo, ;
                       cCC, ;
                       {} , ;
                       cBodyTemp , ;
                       cSubJect , ;
                       aAnexo , ;
                       cUser, ;
                       cPassword, ;
                       "", ;
                       nPriority , ;
                       lRead , ;
                       .F. , ;
                       .F., ;
                       10 , ;
                       NIL , ;
                       .T. , ;
                       lSSL )
         
    If lRet
       hwg_Msginfo("email enviado")
    Else
       hwg_Msgexclamation("Falha enviando email")
    EndIf

RETURN

INIT FUNCTION AppSetup()
 
  ANNOUNCE hwg_ErrSys
 
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" )
 
  SETMODE(25,80)

  SetColor("W+/B")
 
  CLS

  SetColor("W+/B")
 
  IniciaJanela()


RETURN Nil


FUNCTION IniciaJanela(nLi,nCi,nLf,nCf)

LOCAL oCrt
   HB_Default(@nLi,0)
   HB_Default(@nCi,0)
   HB_Default(@nLf,MaxRow())
   HB_Default(@nCf,MaxCol())
 
   
   cTituloJanela:="Teste envio de Email - "+Version()+" "+hb_Compiler()
   
   HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
   HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
   HB_gtInfo(HB_GTI_ICONFILE, "" )
   HB_gtInfo(HB_GTI_CLOSABLE, .F. )
   HB_gtInfo(HB_GTI_ISGRAPHIC, .T. )
   HB_gtInfo(HB_GTI_STDERRCON, .T. )
   HB_gtInfo(HB_GTI_COMPATBUFFER, .T. )
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_SHOWWINDOW, SW_NORMAL )
   HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
   
RETURN Nil

FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVT_DEFAULT
   REQUEST HB_GT_WVT
   REQUEST HB_GT_WGU
   REQUEST HB_GT_WVG
RETURN Nil

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 15:08
por JoséQuintas
Se der uma olhada na hbtip vai conseguir fazer melhor, e verdadeiramente embutir a imagem no html.

   cHtml := ["] + "data:" + tip_FileNameMimeType( "any.jpg", cName, cName ) + ";base64," + oEncoder:Encode( cFileContent ) + ["]


email.png


Pequena correção/informação:
Essas DLLs não tem nada a ver com a imagem.
Elas tem a ver com o tipo de autenticação do servidor de email.
Não tenho nenhuma delas instalada em nenhum lugar.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 15:23
por asimoes
Quintas,

Tem como você postar um exemplo completo? assim fica dificil entender. desculpa ai o velinho.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 18:26
por asimoes
Corrigindo:

Basta: libeay32.dll

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 18 Jan 2016 21:20
por JoséQuintas
Dependendo da conta de email, não precisa nada.

Sobre a imagem:

TUDO que está no email usa a rotina de conversão da hbtip.
Eu só olhei como a hbtip faz, e fiz igual.

      cHtmlText += [ <img src=] + HtmlEncodeJPEG( ::cLogotipoContent ) + [ width="150" height="75">]


FUNCTION HtmlEncodeJPEG( cFileContent )

   LOCAL cTxt, oEncoder := TipEncoderBase64():New()

   cTxt := ["] + "data:" + tip_FileNameMimeType( "ptprapqp.jpg",  "ptprapqp", "ptprapqp" ) + ";base64," + oEncoder:Encode( cFileContent ) + ["]
   RETURN cTxt

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 06:21
por asimoes
Quintas,

Estamos falando do harbour 3.4

Dos fontes que estão na pasta contrib\hbtip\tests

Qual destes fontes funcionam com o seu exemplo:

tipmail.prg
tipmmail.prg
gmail.prg
email.prg

Email e GMail precisam de SSL e exigem a dll libeay32.dll para funcionar.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 07:43
por JoséQuintas
Não faço a menor idéia do que esses fontes tem.
Mas se prestou atenção na rotina, não faz diferença.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 07:50
por asimoes
Quintas,

2 peguntas:

1- Qual a função de envio de email do harbour você usa?
2- O que é ::cLogotipoContent, é um arquivo?

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 08:02
por asimoes
Quintas,

Tentei aqui o seu exemplo mas nada aconteceu aparece um quadrado sem imagem.

Obs.: estou usando os objetos CDO.Configuration e CDO.Message

Screen Shot 01-19-16 at 08.59 AM.PNG

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 08:20
por asimoes
Tentei tip_MailSend também não funcionou.

Deixa pra lá, vou continuar no meu método lusitano.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 10:28
por JoséQuintas
Bom sinal, pelo menos o espaço da imagem está reservado.

Vamos lá, pegando dos seus posts anteriores:

cImagem:='<IMG SRC="&cIm" alt="Logo">'


e pegando o que postei:

cHtmlText += [ <img src=] + HtmlEncodeJPEG( ::cLogotipoContent ) + [ width="150" height="75">]


Usam a mesma coisa, portanto vão funcionar com o mesmo esquema de envio de email.
É só trocar uma coisa por outra, ok, essa parte não tem porque ter dúvida.

Agora vamos à função, tem pouca coisa...

FUNCTION HtmlEncodeJPEG( cFileContent )
LOCAL cTxt, oEncoder := TipEncoderBase64():New()
cTxt := ["] + "data:" + tip_FileNameMimeType( "ptprapqp.jpg", "ptprapqp", "ptprapqp" ) + ";base64," + oEncoder:Encode( cFileContent ) + ["]
RETURN cTxt


Vamos ver...
Pelo nome, recebe uma imagem jpeg.
Mas e aquele nome "ptprapqp.jpg"? Porque não cFileName no parâmetro da função?
Então não tem a ver com o nome de arquivo....

FileContent, isso não deve ser arquivo feliz e contente.....
O que é content? ..... conteúdo....
Ah.... então só pode ser o conteúdo do arquivo.

Então vamos testar isto pra ver o que dá

cFileContent := Memoread( "imagem.jpg" )

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 10:56
por asimoes
Quintas,

Com as suas dicas:

Com tip_MailSend
Fica assim:
Screen Shot 01-19-16 at 11.50 AM.PNG

Com CDOSYS:
Screen Shot 01-19-16 at 11.55 AM.PNG

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 10:58
por asimoes
Quintas,

Estou fazendo assim:
Conforme sua dica.

cHtmlText := [<img SRC=] + HtmlEncodeJPEG( Memoread( hb_DirBase()+"asaprev1.jpg" ) ) + [width="150" height="75" >]

FUNCTION HtmlEncodeJPEG( cFileContent )
LOCAL cTxt, oEncoder := TipEncoderBase64():New()
cTxt := ["] + "data:" + tip_FileNameMimeType( "asaprev1.jpg", "ptprapqp", "ptprapqp" ) + ";base64," + oEncoder:Encode( cFileContent ) + ["]
RETURN cTxt

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 11:23
por JoséQuintas
quase...
Comparar com cuidado:

cHtmlText += [ <img src=] + HtmlEncodeJPEG( ::cLogotipoContent                       ) + [ width="150" height="75">]

cHtmlText := [<img SRC=] + HtmlEncodeJPEG( Memoread( hb_DirBase() + "asaprev1.jpg" ) ) + [width="150" height="75" >]


Mais precisamente aqui. Mas não custa nada conferir se o início pode fazer diferença.

+ [ width="150" height="75">]

+ [width="150" height="75" >]

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 11:30
por asimoes
cContent:=Memoread( hb_DirBase()+"asaprev1.jpg" )

cHtmlText := [<img src=] + HtmlEncodeJPEG( cContent ) + [width="150" height="75" >]

Modifiquei a diferença era o img SRC

Mesmo assim, não funcionou.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 11:37
por JoséQuintas
Colocando o nome do arquivo como parâmetro poderia simplificar.
Então porque será que usei o conteúdo?

http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=16800

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 11:39
por asimoes
Quintas,

Ainda não desisti, eu já tenho a minha solução e que está funcionando, mas acho que você poderia postar um exemplo completo, porque o que você postou não vai, pode ser na forma de chamar a função de email, não sei mesmo.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 11:47
por JoséQuintas
Editei a mensagem que havia colocado.
Coloquei em destaque a diferença.
Não deve ter visto depois da edição.

É um espaço em branco.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 12:02
por asimoes
Quintas,

Removi o espaço mas não funfou.

cContent:=Memoread( hb_DirBase()+"asaprev1.jpg" )

cHtmlText := [<img src=] + HtmlEncodeJPEG( cContent ) + [width="150" height="75">]

Tem certeza que isso funciona para envio de email?

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 12:46
por asimoes
Eu estou usando o gmail para este teste e pesquisando no google achei isso, não se é o problema:

Screen Shot 01-19-16 at 01.45 PM.PNG

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 12:56
por asimoes
Gmail bloqueia conta de quem insere imagens nas mensagens

http://crowdtest.me/gmail-bloqueia-imagens/

Não sei se é o caso.

Mas com este método funciona:

cIm := 'https://lh3.googleusercontent.com/-lJ9SOHOjv1Y/Vp0QG_sXorI/AAAAAAAABBs/PW7a4aIYjz8/s574-Ic42/screenshot.png'
cImagem:= '<p><IMG SRC="&cIm" alt="Logo"></p>'

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 13:03
por JoséQuintas
Agora não é espaço a mais, é a menos.

[width="150" height="75">]


tá faltando o espaço em branco entre o colchete e width.
Dá olha olhada nas mensagens anteriores, que vai ver que mostrei isso.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 13:05
por JoséQuintas
Aqui ó.

foto.png

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 13:08
por asimoes
Quintas,

Ach que isso é pegadinha do malandro. Não tem espaço de menos:

Vou colocar entre code e veja:

cContent:=Memoread( hb_DirBase()+"asaprev1.png" )
cHtmlText := [<img src=] + HtmlEncodeJPEG( cContent ) + [width="150" height="75">]

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 13:15
por asimoes
O espaço a menos entendi:

cHtmlText := [<img alt="Logo" src=] + HtmlEncodeJPEG( cContent ) + [ width="150" height="75">]


Mesmo assim não funcionou.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 13:23
por asimoes
Gerei um arquivo body.html
Abrindo este arquivo no browser mostra a imagem.
No corpo da mensagem do email, não.

<img src="data:image/png;base64,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
Zxn3Bm1S1vZvfOMbTThCyREMwfvc5z7XeIYbS2RtZHl/8zd/E9/61rca70WdGaL5jtTV3X72/sRD
HvKQeOOb3hinnnBinHvwD+LqQi6Tkctmdi7Lu2zdvMbQ/C1gL2U+6Tlx4qe/Fr/4za/jNa95TWwx
YmRDKJt6/DYWjApjxZhkUpns0TdGjbOAXOj3/UYuSSxtr0WDWOD99ttvgwYy70Uuhx56aMyaNWs9
wWBUoHRc6D322ONPnt8QslHXhk4yq/273/1ufXbf8qEwBqGYEBAG1tZ9Q+qQE+GaKtubsjnJCMZE
IxYkRtn22muv5pl704+B7q/LYhR4YJlo5E380z/90588s6mQdW+11VZN7gyZITYCL1ySW0kP9f5E
e6xe/NIXxynHnxDn/uQXMXanF99NLl7Y7E/q+reMGi+mEMxFr3p7HPnTn8X//PAH8dhHPCo2L+Sy
2Ygip1lm+VyX/eeCcI8xYTSlI8g0PSN3nITMvdzv5KIyXktNLJRAjPyoRz2qszODwWSKyz1PsCgy
okpPgdARtPak3x943OMe16xI8BxMhHYhGESgbVx4sWvtCfTaTvfts88+zQpI9jmtSIZf4LMVku22
266znE0FfXjzm9/cJHp5MJLuEsj3xbhnmXnmlVmZkXtBMPr7spe9rPEc6uf+HNj3RfvG8ccdG6cX
I3PV017ZvD81TVjkNQovaI7q/3ekJz527zjtU1+IQ35zSLxp/7f0921kKaPgIaWckYjF91b59ze0
SwgvUS+3lkaT3JG3zL1kYvd+I5f0WDIcEptpDFIgILUg1p+Hwl/91V81qxiIhFtsqYwXQ+GES9ts
s03nc/cltF8SkvIjEUlbbTIR2uWzUE0CsOv5XsBjO/7445s+J8Fk6MU7At7b4Ycf3iRVu8roBb3m
pnbfffc44ogjmlWc3//+9/G85z2v875NDeHRf//3fzdeE2I78cQTm6RzrzLkvg2RN+j1/n1ftE8c
V8bilCNGx5VPe1VMb9458uZ2f2IX2XjP6KqXviUO/eXP478OPji2Jq9DlK9+xliIIrc0ENwjPOz6
rQ33CuUhP7vOU/HdZ7r24he/uJlfyfsM+f+s5KICHkt6LSrXEK4UFmTl64GrB3IoGDxLygSLS46s
sKqzpUwD0/UctOvyHYRMGwNWk3JZNqX8yCXdSASDCCUl67qHQrutCAN5Cnv0N8vmpppsYFm4sI95
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
8f8BUGjtLFnNcJ4AAAAASUVORK5CYII=
" width="150" height="75">

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 17:01
por JoséQuintas
Disse que abriu o html e mostrou imagem, sinal de que é um html válido.

Então o CDO restringe isso.

Deixa eu olhar de novo os posts, se deixei escapar alguma coisa.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 17:13
por JoséQuintas
Deixei passar um importante: onde diz que o gmail não permite mensagens no corpo do email.

Aqui não uso gmail.
E em todas as contas de email que uso funciona.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 18:42
por asimoes
Quintas,

Com GMail.
Desta forma funciona com CDOSYS

//Imagem no computador (local)
cImagem:="asaprev1.png"
cImagem1:='<img src="asaprev1.png" alt="AsaPrev">'
//Imagem de uma URL (nuvem)
//cIm := 'https://lh3.googleusercontent.com/-lJ9SOHOjv1Y/Vp0QG_sXorI/AAAAAAAABBs/PW7a4aIYjz8/s574-Ic42/screenshot.png'
//cImagem1:= '<p><IMG SRC="&cIm"></p>'
//
//Métodos do objeto CDO.Message
//
:AddRelatedBodyPart(hb_DirBase()+cImagem, cImagem, 1)
:Fields:Item("urn:schemas:mailheader:Content-ID"):Value          := "<"+cImagem+">"
:HTMLBody := cMsg + QuebraHTML + IF(!Empty(cImagem), cImagem1, "")

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 18:45
por asimoes
Quintas,

Você pode fazer um teste enviando uma imagem para um email do gmail
pode ser até o meu se quiser (asimoesluz@gmail.com)

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 19:08
por JoséQuintas
O que postei primeiro, imagem do thunderbird, é da minha conta do gmail.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 19:12
por JoséQuintas
email gmail.png

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 19:24
por asimoes
Quintas,

Eita mistério!

Não tem como você postar a sua rotina de envio de email para eu testar aqui?

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 19:40
por JoséQuintas
Já postei há muito tempo por aqui, talvez há mais de um ano.

Ao que parece, estão deixando passar muita coisa.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 19:43
por JoséQuintas

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 20:17
por asimoes
Quintas,

Excelente contribuição, pelo que eu entendi para eu realizar um teste aqui, vou usar o método SendUsingHarbour que é o que você usa correto?
Esse código sofreu alguma atualização, pergunto porque eu uso o harbour 3.4 e a função do método SendUsingHarbour hb_sendmail não tem na 3.4 só na versão 3.2

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 19 Jan 2016 21:04
por asimoes
Quintas,

Infelizmente não funcionou para mim.

De qualquer forma obrigado.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 20 Jan 2016 20:27
por asimoes
Quintas,

Novidades descobri algo interessante.

Fazendo um teste com tip_Mainsend que é a função de email do harbour 3.4
Instalei o thunderbird mo meu notebook, até tenho instalado em outro computador desktop.
A imagem aparece no corpo do email (thunderbird): veja
Screen Shot 01-20-16 at 09.19 PM.PNG

No Google Chrome ou Internet Explorer:
Screen Shot 01-20-16 at 09.23 PM.PNG
Screen Shot 01-20-16 at 09.23 PM.PNG (10.07 KiB) Visualizado 5332 vezes


O código do teste:

 cHtmlText := [<img src=] + HtmlEncodeJPEG( PNGAsa() ) + [ width="150" height="150">]

cBody  := "<strong>"+AzulHTML   +"Log de confirma‡Æo de envio de email em: "+HB_DtoC(Date(),"DD/MM/YYYY") +;
            QuebraHTML+;
            VermelhoHTML+"Feito pelo harbour."+"</strong>" +;
            QuebraHTML +;
            QuebraHTML +;
            "VersÆo: "+Version()+" "+hb_compiler() +;
            QuebraHTML +;
            cHtmlText + ;
            QuebraHTML

cBodyTemp   := "BODY.HTM"

nFileHandle := fCreate(cBodyTemp)
                fWrite(nFileHandle, cBody)
                fClose(nFileHandle)

lRet  := tip_MailSend(cHost, ;
                       nPorta, ;
                       cAlias, ;
                       cTo, ;
                       cCC, ;
                       {} , ;
                       cBodyTemp , ;
                       cSubJect , ;
                       aAnexo , ;
                       cUser, ;
                       cPassword, ;
                       "", ;
                       nPriority , ;
                       lRead , ;
                       .F. , ;
                       .F., ;
                       nTimeOut , ;
                       NIL , ;
                       .T. , ;
                       lSSL, ;
                       NIL , ;
                       NIL , ;
                       NIL )

FUNCTION PNGAsa()
   #pragma __binarystreaminclude "asaprev1.png" | RETURN %s

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 20 Jan 2016 22:44
por JoséQuintas
Pela internet não mostra.
Tentei no celular também e não mostra.

À primeira vista, eles bloqueiam e removem a imagem, e depois clicando pra mostrar não tem mais a imagem....
Eles não desfazem o que fizeram... rs

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 21 Jan 2016 07:21
por asimoes
Quintas,

Que coisa hein!

Eu tava aqui batendo cabeça, e o problema estava no browse, eu pensei no thunderbird quando você mencionou.
Ai eu pensei, será que no thunderbird vai mostrar a imagem? e mostrou!
Então fica a dica para quem quiser utilizar a dica da imagem no corpo da mensagem.

Obs.: Assim: a imagem usando a variável cImagem mostra no browser, cHtmlText não.
No thunderbird mostra ambas.

cHtmlText := [<img src=] + HtmlEncodeJPEG( PNGAsa() ) + [ width="150" height="150">]

cIm := [https://lh3.googleusercontent.com/-QVwBnkr04oA/Vp0Pa7miUII/AAAAAAAABBg/jh0iCxs2bMA/s279-Ic42/ASAPREV1.PNG]
cImagem:= '<p><IMG SRC="&cIm"></p>'

A vantagem deste método acima é que a imagem está na nuvem, no meu teste no picasa, e funciona no browser e thunderbird vai entender!
cIm := [https://lh3.googleusercontent.com/-QVwBnkr04oA/Vp0Pa7miUII/AAAAAAAABBg/jh0iCxs2bMA/s279-Ic42/ASAPREV1.PNG]
cImagem:= '<p><IMG SRC="&cIm"></p>'
cBody  := "<strong>"+AzulHTML   +"Log de confirma‡Æo de envio de email em: "+HB_DtoC(Date(),"DD/MM/YYYY") +;
            QuebraHTML+;
            VermelhoHTML+"Feito pelo harbour."+"</strong>" +;
            QuebraHTML +;
            QuebraHTML +;
            "VersÆo: "+Version()+" "+hb_compiler() +;
            QuebraHTML +;
             cImagem +;
             QuebraHTML +;
            cHtmlText + ;
            QuebraHTML

Imagem no browser a primeira usando o picasa a segunda usando cHtmlText
Screen Shot 01-21-16 at 08.23 AM.PNG

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 21 Jan 2016 08:46
por JoséQuintas
E como eu só uso thunderbird, não via isso.
Só prestei atenção pelo celular depois que mencionou.

Agora é olhar algum email que funciona, salvar como txt, e olhar como fazem.

Talvez seja interessante fazer um teste com o BLAT pra ver como ele faz.

No html é <img src="cid:nome"> e no arquivo usamos embed. Tem naquele meu fonte, é o que eu usava antes.
Seria salvar o email pra ver em formato fonte.

Ficar enviando imagem pra servidor não sei se é interessante, mas depois que a Microsoft removeu Outllook do Windows, parece que ninguém mais instala programa de email, só nós mesmo.... rs

Talvez melhor deixar como sendo o primeiro anexo, assim abre automático, mas seria enviar o emblema da empresa pronto pra uso.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 22 Jan 2016 09:01
por asimoes
Quintas,

Para não esgotar o assunto:

COM CDOSYS funciona usar uma imagem local (computador) no corpo do email (webmail/thunderbird), essa eu já tinha resolvido, mas bati cabeça para descobrir como fazer, buscando no google algum exemplo que não era muito claro, enfim acabei descobrindo.

É assim:

Vou postar a função novamente para demonstrar o exemplo:
Não é bem assim, mas é só para titulo de demonstração:
O arquivo asaprev1.png está em uma pasta \sistema\img
O programa roda na pasta sistema
A chamada da função de email:
cMensagem:=AzulHTML +"Log de confirmação de atualização de sistema em: "+;
HB_DtoC(Date(), "DD/MM/YYYY")+" "+Time()+" "+QuebraHTML+;
VermelhoHTML+"Feito pelo Monitor AsaPrev Versão 3." + QuebraHTML + cImagem + QuebraHTML
Envia_Email({hb_DirBase()+"ASAPREV.NEW"},, cMensagem, "asaprev1.png", .F.)

Dentro da função Envia_Email tem a chamada para Config_Mail que chama Envia_Mail (eu sei que poderia estar tudo em uma única função) mas o intuito é mostrar como é feita a mágica.
O principal está na função Envia_Mail
Na chamada destes métodos:
:AddRelatedBodyPart(hb_DirBase()+"img"+hb_PS()+cImagem, cImagem, 1) //aqui adiciona a imagem ao corpo da mensagem.
:Fields:Item("urn:schemas:mailheader:Content-ID"):Value := "<"+cImagem+">" //aqui é indentificação da image
:Fields:Item("urn:schemas:mailheader:Content-Disposition"):Value := "inline"


E isso funciona tanto em algum webmail como em algum gerenciador de email por exemplo thunderbird, etc.

FUNCTION Envia_Email(aArquivo, cAssunto, cMensagem, cImagem, lInformaEnvio)
LOCAL lOk := .T.

   hb_Default(@aArquivo,{})
   hb_Default(@cAssunto, "Log de atualização de sistema em: "+hb_DtoC(Date(), "DD/MM/YYYY"))
   hb_Default(@cMensagem, "Log de erro de sistema em: "+hb_DtoC(Date(), "DD/MM/YYYY"))
   hb_Default(@cImagem, "")
   hb_Default(@lInformaEnvio, .T.)
   
   aFiles   := aArquivo // pode ser uma matriz com vários endereços
   cSubject := cAssunto
   aQuem    := "Alexandre Simões <asimoesluz@gmail.com>"
   cMsg     := cMensagem
   cServerIp:= "smtp.gmail.com" // servidor smtp
   cFrom    := "Sistema AsaPrev <origem@gmail.com>"
   cUser    := "origem@gmail.com" //"xhbsistemas"
   cPass    := senha"
   vPORTSMTP:= 465
   aCC      := "Alexandre Simões <copia@yahoo.com.br>"
   aBCC     := "" // caracteres entre aspas
   lConf    := .F.
   lSSL     := .T.
   
   lOk := Config_Mail(aFiles,;
                      cSubject,;
                      aQuem,;
                      cMsg,;
                      cServerIp,;
                      cFrom,;
                      cUser,;
                      cPass,;
                      vPORTSMTP,;
                      aCC,;
                      aBCC,;
                      lConf,;
                      lSSL,;
                      cImagem,;
                      lInformaEnvio)

RETURN lOk

FUNCTION Config_Mail(aFiles, cSubject, aQuem, cMsg, cServerIp, cFrom, cUser, cPass, vPORTSMTP, aCC, aBCC, lConf, lSSL, cImagem, lInformaEnvio)
LOCAL lRet
LOCAL oCfg, oErroMail
LOCAL lAut := .T. //cdpar000->mauth
   hb_Default(@cImagem, "")
   hb_Default(@lInformaEnvio, .T.)
   TRY
      oCfg := win_OleCreateObject( "CDO.Configuration" )
      WITH OBJECT oCfg:Fields
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value       := cServerIp
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value   := vPORTSMTP
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value        := 2
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := lAut
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value       := lSSL
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value     := AllTrim(cUser)
           :Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value     := AllTrim(cPass)
           :Update()
      END WITH
      lRet := .T.
   CATCH oErroMail
      IF lInformaEnvio
         MsgStop("Não foi possível enviar o e-mail!"                       +hb_EOL()+ ;
                 "Error: "     + Transform(oErroMail:GenCode,   nil) + ";" +hb_EOL()+ ;
                 "SubC: "      + Transform(oErroMail:SubCode,   nil) + ";" +hb_EOL()+ ;
                 "OSCode: "    + Transform(oErroMail:OsCode,    nil) + ";" +hb_EOL()+ ;
                 "SubSystem: " + Transform(oErroMail:SubSystem, nil) + ";" +hb_EOL()+ ;
                 "Mensagem: "  + oErroMail:Description, "Atenção", 150, 10000, 2, .T.)
      ENDIF
      lRet := .F.
   END
   //--> FIM DAS CONFIGURAÇOES.
   IF lRet
      lRet := Envia_Mail(oCfg,;
                         cFrom,;
                         aQuem,;
                         aFiles,;
                         cSubject,;
                         cMsg,;
                         aCC,;
                         aBCC,;
                         lConf,;
                         lAut,;
                         lSSL,;
                         cServerIp,;
                         cImagem,;
                         lInformaEnvio)
   ENDIF
RETURN lRet

FUNCTION Envia_Mail(oCfg, cFrom, cDest, aFiles, cSubject, cMsg, aCC, aBCC, vEmaiL_Conf, lAut, lSSL, cServerIp, cImagem, lInformaEnvio )
LOCAL aTo
LOCAL lRet
LOCAL nEle, oErroMail
LOCAL cImagem1:='<img src="asaprev1.png" alt="AsaPrev">'

  hb_Default(@cImagem, "")
  hb_Default(@lInformaEnvio, .T.)
 
  IF !Empty(cImagem)
     cImagem1:='<img src="'+cImagem+'" alt="AsaPrev">'
  ENDIF

  aTo:= { cDest } //--> PARA
 
  nEle := 1

   FOR I:=1 TO Len(aTo)
      TRY
         Notificar("Aguarde, processando o envio do email.", "Monitor AsaPrev")
         oMsg := win_OleCreateObject( "CDO.Message" )
         WITH OBJECT oMsg
              :Configuration := oCfg
              :From          := cFrom
              :To            := aTo[i]
              :Cc            := aCC
              :BCC           := aBCC
              :Subject       := cSubject
              * ---------------------------------------------------------
              * Aqui adiciona a imagem ao corpo da mensagem
              * ---------------------------------------------------------
              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 X := 1 TO Len( aFiles )
                 :AddAttachment(AllTrim(aFiles[x]))
                 DO EVENTS
              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()
              DO EVENTS
              :Send()
         END WITH
         IF lInformaEnvio
            MsgInfo("E-mail enviado com sucesso", "Atenção")
         ENDIF
         lRet := .T.
      CATCH oErroMail
         IF lInformaEnvio
            MsgStop("Não foi possível enviar a mensagem: "+cSubject+hb_EOL()+;
                        "para o email: " + aTo[i]+"."                  +hb_EOL()+;
                        "Erro: " +oErroMail:Description , "Atenção")
         ENDIF
         lRet := .F.
      END
   NEXT
   
   oCfg := Nil
   oMsg := Nil

RETURN lRet

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 22 Jan 2016 09:16
por JoséQuintas
Ainda não tinha pensado nisso de novo, mas....

Talvez dê pra colocar essa imagem como anexo, ao invés de embutido no html, e de alguma forma ser considerado como parte do email.

Lembro que no blat eu usava algo como <img src="cid:imagem">, e mais a opção embed pras imagens.

Vamos precisar de um email onde isso funcione, e salvá-lo em formato mime, pra ver como é feito.

Depois é alterar a montagem do email no Harbour pra fazer igual.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 22 Jan 2016 10:37
por asimoes
Outras considerações, achei no google
Screen Shot 01-22-16 at 11.35 AM.PNG

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 29 Fev 2016 17:57
por rubens
Boa tarde...

ASimoes,

Qual o conteúdo da variável

QuebraHTML

Na minha cMSG usei hb_eol() para quebra de linha mas percebi na linha que voce usa a QuebraHTML é um texto html então provavelmente deve ter sido isso que não deixou o meu texto formatado. Foi todo enviado com uma linha só...

Obrigado
Rubens

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 29 Fev 2016 18:37
por asimoes
Olá Rubens,

QuebraHTML := "<br>"

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 29 Fev 2016 20:35
por JoséQuintas
Agora que vi seu último post.
Acabei chegando no mesmo texto.

https://sendgrid.com/blog/embedding-images-emails-facts/

Resumindo: Não existe jeito 100% eficiente.

3 formas citadas:

- Usando CID:, igual BLAT
- Incorporando no Html igual eu faço
- Usando link externo

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 29 Fev 2016 20:57
por lugab
Boa noite, Asimoes...

Para testar o primeiro exemplo que vc postou ( primeiro da primeira página) precisa desses arquivos também ?
libeay32.dll
msvcr120.dll
ssleay32.dll
Precisa das libs:
hbssl.hbc
hbtip.hbc

Se a respost for não, diga quais arquivos precisa...

Só pra lembrar, o seu primeiro exemplo ( que pretendo testar ) , foi
AzulHTML  := '<span style="color:#0000FF">'
VermelhoHTML := '<span style="color:#FF0000">'
QuebraHTML := "
"
cImagem:='<img src="asaprev1.jpg" alt="Monitor AsaPrev">'

cMensagem:=AzulHTML  +"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+hb_DtoC(Date(),"DD/MM/YYYY")+QuebraHTML+;
         VermelhoHTML+"Feito pelo Monitor AsaPrev."+QuebraHTML+;
         cImagem
             
Envia_Email({hb_DirBase()+"ASAPREV.NEW"},,cMensagem,.F.) //Envia email para mim informando que foi feito a atualização.

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 29 Fev 2016 21:07
por asimoes
Olá Lugab,

Você precisa somente destas dll´s e libs

libeay32.dll
msvcr120.dll
hbtip.hbc
hbssl.hbc

As dll´s você vai achar aqui nesta url

http://slproweb.com/products/Win32OpenSSL.html

Ou:
http://slproweb.com/download/Win32OpenSSL-1_0_2f.exe

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 01 Mar 2016 11:00
por lugab
Obrgado, Asimoes...

Inserir uma imagem ao Corpo da Mensagem do Email

MensagemEnviado: 17 Dez 2019 09:48
por Itamar M. Lins Jr.
Ola!
Passei horas aqui... Estudando como DIAGRAMAR o corpo do texto.
Se salvar em arquivo os comandos HTML, fica ok o email, se mandar como string, o texto, os comandos html, aparecem como se fosse parte do texto.

Saudações,
Itamar M. Lins Jr.