Page 1 of 2

Imagen en envio de e-mail

PostPosted: Sat Oct 18, 2008 8:29 am
by dobfivewin
Amigos....

Estoy usando para el envio de e-mail la rutina de abajo....:

se puede que en el cuerpo del mensaje incorporar una imagen? para que el que recibe el correo visualice dicha imagen?.

Con la rutina la puedo poner como documento adjunto, pero quiero ver como dije que el que recibe el correo visualice dicha imagen.

muchas gracias

david
Argentina



Code: Select all  Expand view
#include "MAIL.ch"

*xOrigin     = Direccion de Origen   {}
*xRecipients = Direccion de Destino  {}
*xFiles      = Archivos a Enviar     {}
*xMensaje    = Mensaje                        {}
*xSubject    = Titulo de E-mail      ''

*************************************
FUNCTION       xEnviarMail( xOrigin     ,;
                            xRecipients ,;
                            xFiles      ,;
                            xMensaje    ,;
                            xSubject    )
*************************************
Local oMail
Local cMensaje1 := xMensaje[1]
Local cMensaje2 := xMensaje[2]
Local cMensaje3 := xMensaje[3]
local cSubject :=  xSubject            //"Título del mensaje"

*local cNoteText := cMensaje1 + CRLF   + CRLF    + cMensaje2 + CRLF    + CRLF    + cMensaje3
local cNoteText := cMensaje1 + chr(13)+ chr(13) + cMensaje2 + chr(13) + chr(13) + cMensaje3
* local cNoteText := cMensaje1 + ' ' + cMensaje2 + ' 'cMensaje3

local cMsgType := nil

local cConversationID := nil

local dDate := Date()

local cTime := Time()

local lReceipt := .f.

local lFromUser := .t.                    // Abre el gestor de correo

local aOrigin := xOrigin                  //{"tudireccion@dominio.com"}
local aRecipients := xRecipients      //{CLIENTES->Mail}
local aFiles := xFiles                     //{"c:\factura1.pdf","c:\factura2.pdf"}

//
cMensaje1 := xMensaje[1]      //"Linea 1 del mensaje"
cMensaje2 := xMensaje[2]      //"Linea 2 del mensaje"
cMensaje3 := xMensaje[3]      //"Linea 3 del mensaje"
//

oMail:=TMail():New(cSubject ,;
                             cNoteText ,;
                             cMsgType ,;
                             cConversationID ,;
                             dDate,;
                             cTime,;
                             lReceipt,;
                             lFromUser,;
                             aOrigin,;
                             aRecipients,;
                             aFiles)
oMail:Activate()
oMail:End()

RETURN NIL

Re: Imagen en envio de e-mail

PostPosted: Mon Mar 25, 2013 6:58 pm
by karinha
Nadie?

Re: Imagen en envio de e-mail

PostPosted: Mon Mar 25, 2013 8:55 pm
by benjiben143
Hola wenas wenas

con cdo. lo hago asi


Code: Select all  Expand view

Function Envia_eMail(oCfg,cFrom, cTo, cCC, cBCC, cMsg, cSubject)
 
  local cToken
  local lRet := .f. , Omsg , x, i, loBP
    
       TRY
         oMsg := CREATEOBJECT ( "CDO.Message" )
           WITH OBJECT oMsg
                :Configuration = oCfg
                :From = cFrom                
                :To = cTo
                :CC = cCC
                :BCC = cBCC
               
                :Subject = cSubject
                :TextBody = cMsg
               
               
                For x := 1 To Len( aAttach )
                    if aAttach[x] <> NIL
                   
                       :AddAttachment(AllTrim(aAttach[x]))
                    endif
                Next
           
                :HTMLBody = "<p><img src='cid:id_imagen10'></p>" +"<p>La imagen de arriba esta embebida en el mensaje.</p>"
                loBP:=:AddRelatedBodyPart("c:\faceleben\kasto2.bmp", "id_imagen10", 1)
                WITH OBJECT loBP:Fields
                    :Item("urn:schemas:mailheader:Content-ID") = "id_imagen10"
                    :Update()
                END WITH

                :Send()
           END WITH
           lRet := .t.
       CATCH
      //     MsgInfo("No se pudo mandar la factura ")
           lRet := .f.
         END
 
   
Return lRet


 


saludos

Re: Imagen en envio de e-mail

PostPosted: Tue Mar 26, 2013 12:37 pm
by karinha
Muchas Gracias benjiben.

Salu2.

Re: Imagen en envio de e-mail

PostPosted: Tue Mar 26, 2013 1:36 pm
by karinha
Más ejemplos acá:

http://www.portalfox.com/index.php?name ... me=Printer

Muchas gracias, saludos.

Re: Imagen en envio de e-mail

PostPosted: Tue Mar 26, 2013 2:18 pm
by benjiben143
de ese portal saque la forma de mandar imagenes

saludos

trae muchas cosas que se pueden aprovechar

Re: Imagen en envio de e-mail

PostPosted: Tue Mar 26, 2013 4:51 pm
by karinha
Code: Select all  Expand view

          /*
          Solicitando confirmación de lectura

          WITH loMsg
         .From = "user@mail.com"
         .Fields("urn:schemas:mailheader:disposition-notification-to") = .From
         .Fields("urn:schemas:mailheader:return-receipt-to") = .From
         .Fields.Update
          ENDWITH
          */


         :Fields("urn:schemas:mailheader:disposition-notification-to") = :FROM
         :Fields("urn:schemas:mailheader:return-receipt-to")           = :FROM
 


Esto no funiconó.

Salu2

Re: Imagen en envio de e-mail

PostPosted: Tue Mar 26, 2013 7:06 pm
by karinha
Resuelto:

Code: Select all  Expand view

     // Solicitando confirmación de lectura
     // Asi funciona...
     :Fields( "urn:schemas:mailheader:disposition-notification-to" ):Value := cFrom
     :Fields:UpDate()
     //cFrom=Cuenta de salida. Quem envia o email.
 


Gracias, saludos.

Re: Imagen en envio de e-mail

PostPosted: Wed Mar 27, 2013 3:52 pm
by horacio
He probado esta clase, mandé una imágen no como attachment sino que se muestre en el cuerpo del correo. El problema que encontré es que en algunos lo muestra reducido ( gmail ) o me pide una confirmación para mostrar la imágen ( hotmail ). Quisiera probar enviando un archivo html pero tratando de usar el método "CreateMHTMLBody" me da un error, como si el método no existiese en la clase. Alguien a probado este método. Desde ya muchísimas gracias.

Saludos

Re: Imagen en envio de e-mail

PostPosted: Wed Mar 27, 2013 4:45 pm
by benjiben143
hola wen dia

le he probado y funciona y muestra el html al recibir ,, checalo

:CreateMHTMLBody("File://c:\faceleben\suave.html",0)




saludos

Re: Imagen en envio de e-mail

PostPosted: Wed Mar 27, 2013 11:01 pm
by horacio
Gracias Benjiben por contestar, Aqui te muestro el código y a continuación el mensaje de error

Code: Select all  Expand view

Local loCfg := CreateObject( "CDO.Configuration" )
Local hIni  := HB_ReadIni( oVarGlobales : cIni )
   
With Object loCfg : Fields
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ) : Value       := Alltrim( hIni[ "Correo" ][ "Smtp" ] )
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) : Value   := Alltrim( hIni[ "Correo" ][ "Port" ] )
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ) : Value        := 2
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ) : Value := .T.
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ) : Value       := .T.
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ) : Value     := 'micorreo@gmail.com'
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ) : Value     := 'pasword'
    :Update()
End
loMsg := CREATEOBJECT ( "CDO.Message" )
With Object loMsg
:Configuration = loCfg
    :From = 'micorreo@gmail.com' //hIni[ "Correo" ][ "Usuario" ] //"hmdellacasa@yahoo.com.ar"
    :To = 'tu_correo@yahoo.com.ar' //'horacio_dellacasa@yahoo.com.ar'     // <-----       Coloca acá tu dirección de correo
    :Subject = Alltrim( oVarGlobales : cEmpresa ) //Alltrim( cAsunto )
    :CreateMHTMLBody("file://c:\admin\index.htm", 0)
    :Send()
End
Return 0
 


Mensaje de error
Code: Select all  Expand view

plicación
===========
   Path y nombre: C:\colegio_c\T-REX.EXE (32 bits)
   Tamaño: 4,795,904 bytes
  Versión del compilador: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 9421)
    Versión librería GUI: FWHX 12.04
   versión de Windows: 5.1, Build 2600 Service Pack 2

  Tiempo de ejecución: 0 hours 0 mins 1 secs
   Error occurrido el: 28/03/2013, 19:55:31
 Descripci¢n del error: Error CDO.Message/3  DISP_E_MEMBERNOTFOUND: CREATEMHTMLBODY
   Args:
     [   1] = C   file://c:\admin\index.htm
     [   2] = N   0

Llamadas al Stack
===========
   Llamado por:  => TOLEAUTO:CREATEMHTMLBODY( 0 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => MANDACORREO( 473 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => (b)ERRORDIALOG( 437 )
   Llamado por: .\source\function\MSGRUN.PRG => (b)MSGRUN( 36 )
   Llamado por: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )
   Llamado por:  => TDIALOG:DISPLAY( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 873 )
   Llamado por:  => DIALOGBOXINDIRECT( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
   Llamado por: .\source\function\MSGRUN.PRG => MSGRUN( 42 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => ERRORDIALOG( 437 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => (b)ERRORSYS( 31 )
   Llamado por:  => DBUSEAREA( 0 )
   Llamado por: C:\colegio_c\util.prg => CARGABASES( 115 )
   Llamado por: C:\colegio_c\plt.prg => (b)START( 358 )
   Llamado por: .\source\function\MSGRUN.PRG => (b)MSGRUN( 36 )
   Llamado por: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )
   Llamado por:  => TDIALOG:DISPLAY( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 873 )
   Llamado por:  => DIALOGBOXINDIRECT( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
   Llamado por: .\source\function\MSGRUN.PRG => MSGRUN( 42 )
   Llamado por: C:\colegio_c\plt.prg => (b)START( 358 )
   Llamado por: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 973 )
   Llamado por: C:\colegio_c\plt.prg => START( 358 )
   Llamado por: C:\colegio_c\plt.prg => MAIN( 16 )
 


Que estoy haciendo mal ??? Gracias de antemano

Saludos

Re: Imagen en envio de e-mail

PostPosted: Wed Mar 27, 2013 11:01 pm
by horacio
Gracias Benjiben por contestar, Aqui te muestro el código y a continuación el mensaje de error

Code: Select all  Expand view

Local loCfg := CreateObject( "CDO.Configuration" )
Local hIni  := HB_ReadIni( oVarGlobales : cIni )
   
With Object loCfg : Fields
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ) : Value       := Alltrim( hIni[ "Correo" ][ "Smtp" ] )
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) : Value   := Alltrim( hIni[ "Correo" ][ "Port" ] )
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ) : Value        := 2
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ) : Value := .T.
    :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ) : Value       := .T.
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ) : Value     := 'micorreo@gmail.com'
    :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ) : Value     := 'pasword'
    :Update()
End
loMsg := CREATEOBJECT ( "CDO.Message" )
With Object loMsg
:Configuration = loCfg
    :From = 'micorreo@gmail.com' //hIni[ "Correo" ][ "Usuario" ] //"hmdellacasa@yahoo.com.ar"
    :To = 'tu_correo@yahoo.com.ar' //'horacio_dellacasa@yahoo.com.ar'     // <-----       Coloca acá tu dirección de correo
    :Subject = Alltrim( oVarGlobales : cEmpresa ) //Alltrim( cAsunto )
    :CreateMHTMLBody("file://c:\admin\index.htm", 0)
    :Send()
End
Return 0
 


Mensaje de error
Code: Select all  Expand view

plicación
===========
   Path y nombre: C:\colegio_c\T-REX.EXE (32 bits)
   Tamaño: 4,795,904 bytes
  Versión del compilador: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 9421)
    Versión librería GUI: FWHX 12.04
   versión de Windows: 5.1, Build 2600 Service Pack 2

  Tiempo de ejecución: 0 hours 0 mins 1 secs
   Error occurrido el: 28/03/2013, 19:55:31
 Descripci¢n del error: Error CDO.Message/3  DISP_E_MEMBERNOTFOUND: CREATEMHTMLBODY
   Args:
     [   1] = C   file://c:\admin\index.htm
     [   2] = N   0

Llamadas al Stack
===========
   Llamado por:  => TOLEAUTO:CREATEMHTMLBODY( 0 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => MANDACORREO( 473 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => (b)ERRORDIALOG( 437 )
   Llamado por: .\source\function\MSGRUN.PRG => (b)MSGRUN( 36 )
   Llamado por: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )
   Llamado por:  => TDIALOG:DISPLAY( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 873 )
   Llamado por:  => DIALOGBOXINDIRECT( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
   Llamado por: .\source\function\MSGRUN.PRG => MSGRUN( 42 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => ERRORDIALOG( 437 )
   Llamado por: C:\colegio_c\ERRSYSW.PRG => (b)ERRORSYS( 31 )
   Llamado por:  => DBUSEAREA( 0 )
   Llamado por: C:\colegio_c\util.prg => CARGABASES( 115 )
   Llamado por: C:\colegio_c\plt.prg => (b)START( 358 )
   Llamado por: .\source\function\MSGRUN.PRG => (b)MSGRUN( 36 )
   Llamado por: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )
   Llamado por:  => TDIALOG:DISPLAY( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 873 )
   Llamado por:  => DIALOGBOXINDIRECT( 0 )
   Llamado por: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
   Llamado por: .\source\function\MSGRUN.PRG => MSGRUN( 42 )
   Llamado por: C:\colegio_c\plt.prg => (b)START( 358 )
   Llamado por: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 973 )
   Llamado por: C:\colegio_c\plt.prg => START( 358 )
   Llamado por: C:\colegio_c\plt.prg => MAIN( 16 )
 


Que estoy haciendo mal ??? Gracias de antemano

Saludos

Re: Imagen en envio de e-mail

PostPosted: Thu Mar 28, 2013 4:58 am
by benjiben143
hola anexo la funcion completa


Code: Select all  Expand view

***************************************************************
* Enviando emails                                             *
*                                                             *
* Desenvolvedor: Ricardo de Moura Marques                     *
* email: ricardomouramarques@hotmail.com                      *
*                                                             *
* Agradecimentos ao Alessandro Seribeli Barreto - "Ale SB"    *
* pelo código inicial, sem o qual, esse projeto               *
* não seria possível                                         *
*                                                             *
***************************************************************

#include "fivewin.ch"


memvar correo
Static cAttach := ""
Static aAttach := {}
********************************************************************************
Function Main()
local cdestino :="chino72vale@hotmail.com;ferropuerto@ferropuerto.com"
local carchivos:={"C:\fwh\samples\hola.txt","C:\fwh\samples\texto.txt"}
local ctxt     :="a mandar un correo"
local csubject :="correo de pruebas "
local cbmp     :="c:\faceleben\kasto2.bmp"
local chtml    :="c:\faceleben\suave.html"

  if config_email(cdestino, carchivos, ctxt, csubject,cbmp,chtml)
      ? "se mando el correo"
  else
     ? " no se mando correo"
  endif
 


Return Nil


********************************************************************************
Function Config_eMail(cdest, cfiles, ctxt, csubject, cbmp, chtml )

  Local cUser,cPass,cRemt, cCC, cCCO
  local lRet := .f.
  local oCfg, oError
  local cServ :="smtp.xxxxx.com"         // servidor smtp
  local nPort :=25                          // puerto
  local lAut  :=.t.
  local lSSL  :=.f.      
 
 
  if cfiles=nil
     aAttach:={}
  else
     aAttach:=cfiles
  endif  
 
 
  cPass:="xxxxxx"                          //usuario  
  cuser:="xxxxx@xxxxx.com"             //correo del quien manda
  ccc:=""
  ccco:=""
  cRemt:=cuser
 
 
 // aAttach:=CFILES   // serian los archivos anexados we
 
  if Empty(cPass) .or. Empty(cRemt) .or. empty(cDest)
     ? "falta datos para mandar correo,,,, destino/ remitente / usuario checar "
     return .f.
  endif  
  ? "entramos a la configucraion"
  TRY
    oCfg := CREATEOBJECT( "CDO.Configuration" )
      WITH OBJECT oCfg:Fields
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"       ):Value := cServ
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"   ):Value := nPort
           :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 := cUser
           :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"     ):Value := cPass
              :Update()
      END WITH
      lRet := .t.
  CATCH oError
    MsgInfo( "No se pudo enviar e-Mail!"  +CRLF+ ;
             "Error: "     + Transform(oError:GenCode,   nil) + ";" +CRLF+ ;
             "SubC: "      + Transform(oError:SubCode,   nil) + ";" +CRLF+ ;
             "OSCode: "    + Transform(oError:OsCode,    nil) + ";" +CRLF+ ;
             "SubSystem: " + Transform(oError:SubSystem, nil) + ";" +CRLF+ ;
             "Mensaje: "   + oError:Description, "Atención" )

  END
  //--> FIM DAS CONFIGURAÇOES.
  if lRet
     lRet := Envia_eMail(oCfg,cRemt,cDest, cCC, cCCO, cTxt, cSubject, cbmp, chtml)   
  endif
   
Return lRet
 




********************************************************************************
Function Envia_eMail(oCfg,cFrom, cTo, cCC, cBCC, cMsg, cSubject, cbmp, chtml)
 
  local cToken
  local lRet := .f. , Omsg , x, i, loBP
    
       TRY
         oMsg := CREATEOBJECT ( "CDO.Message" )
           WITH OBJECT oMsg
                :Configuration = oCfg
                :From = cFrom                
                :To = cTo
                :CC = cCC
                :BCC = cBCC
               
                :Subject = cSubject
                :TextBody = cMsg
               
               
                For x := 1 To Len( aAttach )
                    if aAttach[x] <> NIL
                   
                       :AddAttachment(AllTrim(aAttach[x]))
                    endif
                Next
           
                :HTMLBody = "<p><img src='cid:id_imagen10'></p>" +"<p>La imagen de arriba esta embebida en el mensaje.</p>"
                loBP:=:AddRelatedBodyPart(cbmp, "id_imagen10", 1)
                WITH OBJECT loBP:Fields
                    :Item("urn:schemas:mailheader:Content-ID")= "id_imagen10"
                    :Update()
                END WITH
                :CreateMHTMLBody("File://"+chtml,0)
                :Send()
           END WITH
           lRet := .t.
       CATCH
      //     MsgInfo("No se pudo mandar la factura ")
           lRet := .f.
         END
 
   
Return lRet


 


se llama la funcion
config_email(cdestino, carchivos, ctxt, csubject,cbmp,chtml)

compilado con xharbour 1.2.1

Re: Imagen en envio de e-mail

PostPosted: Thu Mar 28, 2013 11:05 pm
by horacio
Gracias benjiben, pruebo y te comento ...

Saludos

Re: Imagen en envio de e-mail

PostPosted: Thu May 16, 2013 2:53 pm
by karinha
Buenas amigos, al añadir una imagen bmp al emal, la imagen viene correcta, más el texto(mensageria) del email no. Que hacer?

gracias, saludos.