Imagen en envio de e-mail

Re: Imagen en envio de e-mail

Postby devtuxtla » Thu May 16, 2013 5:00 pm

Hola FiveWinners.

Este codigo genera una mail con imagenes y funciona bien.

espero les sirva

Saludos

// envio de mail
#Include "FiveWin.ch"

Function Enviar_Main(_TO, _CC, _BCC, _PDF, _XML, _TEXTO, _SUBJECT, _MSG, _cliente, _folio)
LOCAL RET:=.T.
PRIVATE oEmailCfg,oEmailMsg
PRIVATE cServerEmail:="smtp.midominio.com" // cuidado... este es el dominio de donde sale el mail
PRIVATE cEnvia:="enviomail@midominio.com" // cuidado... este es el mail
PRIVATE cPEnvia:="mipass" // cuidado... esta es la password
PRIVATE nPrePuerto:=587 // cuidado... el numero de puerto puede variar

DEFAULT _CC:="", _BCC:="", _PDF:="", _XML:="", _TEXTO:="Anexo email", _SUBJECT:="Envio mail......", _MSG:=.T.
PRIVATE cServidor:=Params->MailServer+SPACE(80),nPuerto:=125 // OJO CON ESTE NUMERO DE PUERTO DE ENVIO, PUEDE VARIAR
PRIVATE cUsuario:=Params->MailUser+SPACE(80)
PRIVATE cUsuario:=SPACE(80) , cPassword:=SPACE(80)
IF CFDI:FL_AutoEmail = .T.
_MSG := .F.
ENDIF
IF EMPTY(cUsuario)
MSGSTOP("CDO002 El Usuario que envia el e-Mail es Incorrecto" + CRLF + "Debe Proporcionarlo","Error...")
IF CONFIGURAR_eMain() = .T.
USE ("Params") ALIAS PA SHARED NEW
cUsuario:=PA->MailUser+SPACE(80)
PA->(DBCLOSEAREA())
ENDIF
IF EMPTY(cUsuario)
MSGSTOP("CDO003 Imposible enviar el Correo, la clave del usuario es Inválida","Error...")
RETURN .F.
ENDIF
ENDIF
IF EMPTY(nPuerto)
nPuerto:=nPrePuerto
ENDIF

IF EMPTY(_TO)
RETURN .F.
ENDIF
nPOS:=AT(";", _TO) // permite enviar con copia
_TO_ORI:=_TO
IF nPOS > 0
_TO:=SUBSTR(_TO_ORI, 1, nPOS-1)
_CC:=SUBSTR(_TO_ORI, nPOS+1 )
ENDIF
IF EMPTY(_BCC)
_BCC:= ALLTRIM(cUsuario)
ENDIF
TRY
oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oEmailCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := ALLTRIM(cServerEmail)
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := nPuerto
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F.
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := ALLTRIM(cEnvia)
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := ALLTRIM(cPEnvia)
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 60
:Update()
END WITH
CATCH oError
MsgInfo( "Could not create message configuration" + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description )
Return .F.
END
oError:=NIL

TRY
oEmailMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oEmailMsg
:Configuration = oEmailCfg
:From = chr(34)+" http://www.PremiumPyME.com "+chr(34)+ ALLTRIM(cUsuario) // This will be displayed in the From (The email id does not appear)
:To = ALLTRIM(_TO) // <----- Place the TO email address
:Subject = _SUBJECT
:ReplyTo = ALLTRIM(cUsuario)
:Sender = ALLTRIM(cUsuario) // Read Receipt message is send to this
:Organization = "mi empresa sa de cv" // "My Company Name"
:HTMLBody = Z_CDO_HTML(_cliente, _folio)
IF ! EMPTY(_PDF) .AND. FILE(_PDF)
:AddAttachment = _PDF
ENDIF
IF ! EMPTY(_XML) .AND. FILE(_XML)
:AddAttachment = _XML
ENDIF
IF ! EMPTY(_CC)
:cc = _CC
ENDIF
IF ! EMPTY(_BCC)
:Bcc = _Bcc
ENDIF
:Send()
END WITH

SysRefresh()
CATCH oError

MsgInfo( "SEND01 NO PUDE enviar el mail a : " + ";" + 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+ ;
"Message: " + oError:Description )
Return .F.

END
IF _MSG = .T.
MsgInfo("Email enviado")
ENDIF
Return RET

FUNCTION CONFIGURAR_eMain()
LOCAL RET:=.F.
PRIVATE oDlf, oGet:=ARRAY(5)
PRIVATE cServerEmail:="smtp.midominio.com"
PRIVATE cEnvia:="enviomail@midominio.com"
PRIVATE cPEnvia:="Externa_2013"
PRIVATE nPrePuerto:=587

PRIVATE cServidor:=Params->MailServer+SPACE(80),nPuerto:=Params->MailPuerto, cUsuario:=Params->MailUser+SPACE(80), cUsuario:=SPACE(80) , cPassword:=Params->MailPass+SPACE(80)

IF EMPTY(cServidor)
cServidor:=cServerEmail
ENDIF

IF EMPTY(nPuerto)
nPuerto:=nPrePuerto
ENDIF


DEFINE DIALOG oDlf RESOURCE "EMAIL_CONF" OF oWnd
REDEFINE GET oGet[1] VAR cServidor ID 101 OF oDlf READONLY
REDEFINE GET oGet[2] VAR nPuerto ID 102 OF oDlf PICTURE "9999"
REDEFINE GET oGet[3] VAR cUsuario ID 103 OF oDlf
REDEFINE GET oGet[4] VAR cPassword ID 104 OF oDlf
REDEFINE BUTTON oGet[5] ID 110 OF oDlf ACTION IIF(RET:=PRUEBA_MAIL() = .T., (GUARDA_DATOSMAIL(), oDlf:END()), ;
MSGINFO("Los datos del Mail NO son Correctos","Cuidado") ) CANCEL


ACTIVATE DIALOG oDlf CENTERED


RETURN RET

FUNCTION PRUEBA_MAIL()
LOCAL RET:=.T.
IF EMPTY(cUsuario)
RETURN .F.
ENDIF


TRY
oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oEmailCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := ALLTRIM(cServerEmail)
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := nPuerto
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F.
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := ALLTRIM(cEnvia)
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := ALLTRIM(cPEnvia)
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 60
:Update()
END WITH
CATCH oError
MsgInfo( "Could not create message configuration" + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description )
Return .F.
END
oError:=NIL
TRY
oEmailMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oEmailMsg
:Configuration = oEmailCfg
:From = chr(34)+" MI SISTEMA "+chr(34)+ ALLTRIM(cUsuario)
:To = ALLTRIM(cUsuario) // <----- Place the TO email address
:Subject = "Mensaje de Prueba enviado por MI SISTEMA "
:ReplyTo = ALLTRIM(cUsuario)
:Sender = ALLTRIM(cUsuario) // Read Receipt message is send to this
:Organization = " MI COMPAÑIA SA de CV" // "My Company Name"
:HTMLBody = "<HTML> Te anexo el documento de prueba </HTML>"
:TextBody = "Mensaje de Prueba enviado por mi empresa"
:Send()
END WITH
SysRefresh()
CATCH oError

MsgInfo( "SEND02 NO PUDE enviar el mail a : " + ALLTRIM(cUsuario) + ";" + 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+ ;
"Message: " + oError:Description )
IF oError:GenCode = 1001 .AND. oError:SubCode = 3
MSGINFO("El Puerto de Salida NO es correcto","Error...")
ENDIF


Return .F.

END
MsgInfo("Mensaje de Prueba enviado a: " + ALLTRIM(cUsuario),"Informando...")

RETURN RET

FUNCTION GUARDA_DATOSMAIL()
LOCAL RET:=.T.

SELECT("Params")
TRY
Params->(RLOCK())
Params->MailServer := ALLTRIM(cServidor)
Params->MailPuerto := nPuerto
Params->MailUser := ALLTRIM(cUsuario)
Params->MailPass := ALLTRIM(cPassword)
Params->(DBUNLOCK())

SR_CommitTransaction()
SR_EndTransaction()
CATCH oERR
SR_RollBackTransaction()
MSGINFO("CDO001 NO pude Registrar los datos del Mail ","Error...")
MSGALERT(PR_ErrorMessage( oErr ),"Alerta...")
END TRY


RETURN RET


FUNCTION Z_CDO_HTML(_empresa, _folio)
LOCAL cHTML:=""

cHTML+='<!--'
cHTML+=' Document : Index HTML'
cHTML+=' Created on : 11/03/2013, 12:35:37 PM'
cHTML+=' Author : Gloria Annaís Martínez-Flores'
cHTML+=' Description: Index desde donde se ejecuta la pagina'
cHTML+='-->'
cHTML+=''
cHTML+='<html>'
cHTML+=' <head>'
cHTML+=' <title>PremiumPyME, Facturaci&oacute;n Electr&oacute;nica</title>'
cHTML+=' </head>'
cHTML+=' '
cHTML+=' <body oncontextmenu="return false" onkeydown="return false">'
cHTML+=' <table cellspacing="0" cellpadding="0" bgcolor="#B7C3C9">'
cHTML+=' <tr>'
cHTML+=' <td>'
cHTML+=' <img src="http://www.univirtual.edu.mx/img_envio/imgheader2t.png" width="728" height="90" alt="PremiumPyME" border="0">'
cHTML+=' <blockquote>'
cHTML+=' <p align="left">'
cHTML+=' <font size="3" color="#003366" face="verdana">'
cHTML+=' <strong>Para : #empresa#</strong>'
cHTML+=' </font>'
cHTML+=' </p> '
cHTML+=' </blockquote>'
cHTML+=' </td>'
cHTML+=' </tr>'
cHTML+=' '
cHTML+=' <tr>'
cHTML+=' <td align="left" width="708">'
cHTML+=' <table cellspacing="0" cellpadding="30" bgcolor="#B7C3C9">'
cHTML+=' <tr>'
cHTML+=' <td rowspan="2">'
cHTML+=' <p align="justify">'
cHTML+=' <font size="3" color="#003366" face="verdana">'
cHTML+=' Estimado cliente,'
cHTML+=' <br><br>Por este conducto le enviamos su comprobante fiscal digital &nbsp;<strong>#numero#</strong>, agradecemos su pago.'
cHTML+=' </font>'
cHTML+=' </p>'
cHTML+=' </td>'
cHTML+=' </tr>'
cHTML+=' '
cHTML+=' <tr> '
cHTML+=' <td valign="left" width="250">'
cHTML+=' <img src="http://www.univirtual.edu.mx/img_envio/premiumfact2.png" width="230" height="140" alt="PremiumPyME" border="none">'
cHTML+=' </td>'
cHTML+=' </tr>'
cHTML+=' </table> '
cHTML+=' </tr>'
cHTML+=''
cHTML+=' <tr>'
cHTML+=' <td>'
cHTML+=' <center>'
cHTML+=' <font size="3" color="#003366" face="verdana">'
cHTML+=' <br><strong>PremiumPyME</strong>'
cHTML+=' <br><strong>Facturaci&oacute;n Electr&oacute;nica</strong>'
cHTML+=' <br>Telefono (55) 593 84917'
cHTML+=' <br><a href="http://www.premiumpyme.com">www.premiumpyme.com</a>'
cHTML+=' </font>'
cHTML+=' </center>'
cHTML+=' <img src="http://www.univirtual.edu.mx/img_envio/imgfooter2.png" width="728" height="90" alt="PremiumPyME" border="0">'
cHTML+=' </td>'
cHTML+=' </tr>'
cHTML+=' </table>'
cHTML+=' </body>'
cHTML+='</html>'
cHTML := STRTRAN(cHTML,"#empresa#",_empresa)
cHTML := STRTRAN(cHTML,"#numero#",_folio)
RETURN cHTML
Visite Chiapas, el paraiso de México.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Imagen en envio de e-mail

Postby marca » Fri May 17, 2013 12:33 pm

Bom dia
Este seu exemplo usa arquivo .Html
Vc não saberia como fazer com .jpg ou .bmp ?
Marcelo Ferro da Silveira
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
marca
 
Posts: 117
Joined: Mon Aug 13, 2007 5:22 pm
Location: Brazil

Re: Imagen en envio de e-mail

Postby devtuxtla » Sat May 18, 2013 2:15 am

Hola

Para enviar una imagen a traves de CDO debe hacerse el cuerpo de mensaje con codigo html.

CDO filtra todo el codigo y solo permite HTML 1.0 puro, NO CSS.

Lo mas sencillo que encontramos fue esta tecnica, la que esta descrita en el codigo arriba, y funciona bien.

Cuando CDO muestra las imagenes, estas deben estar alojadas en un server en la web donde las tengas accesible al codigo html, NO pueden anexarse al cuerpo del mail.

Despues de muchos intentos fallidos, esta tecnica funciona bien.

Recuerden solo html 1.0 puro

Saludos
Visite Chiapas, el paraiso de México.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 51 guests