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ón Electró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 <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ón Electró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
Imagen en envio de e-mail
Re: Imagen en envio de e-mail
Bom dia
Este seu exemplo usa arquivo .Html
Vc não saberia como fazer com .jpg ou .bmp ?
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
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
Re: Imagen en envio de e-mail
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
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.