Page 1 of 2
Imagen en envio de e-mail
Posted: 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
#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
Posted: Mon Mar 25, 2013 6:58 pm
by karinha
Nadie?
Re: Imagen en envio de e-mail
Posted: Mon Mar 25, 2013 8:55 pm
by benjiben143
Hola wenas wenas
con cdo. lo hago asi
Code: Select all | Expand
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
Posted: Tue Mar 26, 2013 12:37 pm
by karinha
Muchas Gracias benjiben.
Salu2.
Re: Imagen en envio de e-mail
Posted: Tue Mar 26, 2013 1:36 pm
by karinha
Re: Imagen en envio de e-mail
Posted: 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
Posted: Tue Mar 26, 2013 4:51 pm
by karinha
Code: Select all | Expand
/*
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
Posted: Tue Mar 26, 2013 7:06 pm
by karinha
Resuelto:
Code: Select all | Expand
// 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
Posted: 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
Posted: 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
Posted: 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
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
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
Posted: 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
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
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
Posted: Thu Mar 28, 2013 4:58 am
by benjiben143
hola anexo la funcion completa
Code: Select all | Expand
***************************************************************
* 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
Posted: Thu Mar 28, 2013 11:05 pm
by horacio
Gracias benjiben, pruebo y te comento ...
Saludos
Re: Imagen en envio de e-mail
Posted: 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.