Page 1 of 1

Formato Texto en HTML con Define Mail.

PostPosted: Wed Dec 27, 2017 11:57 am
by Garbi
Ya sé que lo he preguntado alguna vez, pero los links que me habéis adjuntado no he conseguido nada.

Mi pregunta es usando: DEFINE MAIL ;
......................;
TEXT ctext.......

Al abrir el outlook para enviar el email me aparece como texto sin formato, como puedo hacer que la opción que escoga sea de tipo de formato el HTML.

Tengo un cliente que quiere que sea así y que no tenga que cambiarlo él, y si además se pudiera poner la firma por defecto que tiene el outlook en su parametros para enviar mensajes nuevos sería perfecto.

Estoy haciendo pruebas, pero no consigo que el outlook me haga caso.

No se si será pasando un parámetro <ctype> of the message lo hace o lo que tengo que hacer usando esta clase.

Muchas Gracias por vuestra ayuda.

Re: Formato Texto en HTML con Define Mail.

PostPosted: Wed Dec 27, 2017 2:11 pm
by Antonio Linares
Code: Select all  Expand view
  TRY
      oOutlook = GetActiveObject( "Outlook.Application" )
      lClose   = .F.
   CATCH
      TRY
         ShellExecute( ,"Open", "Outlook",,, 7 )
         oOutlook = CreateObject( "Outlook.Application" )
         lClose = .T.
      CATCH
         oOutlook = nil
      END
   END

   oMail = oOutlook:CreateItem( 0 )

   ...

   oMail:HtmlBody = cHTML

Re: Formato Texto en HTML con Define Mail.

PostPosted: Wed Dec 27, 2017 2:13 pm
by Antonio Linares
Busca por HtmlBody en estos foros y encontrarás muchos más ejemplos

Formato Texto en HTML con Define Mail. Ayuda

PostPosted: Fri Dec 29, 2017 9:22 am
by Garbi
Hola Maestro,

Entiendo que si lo hago a través de abrir yo el outlook, si se puedo hacer fácilmente según tu ejemplo y lo que he visto en el foro.

Mi pregunta es si usando "DEFINE MAIL " del rpreview.prg se puede indicar que sea de formato HTML, no abriendo la apliación el outllook.

Puede que me lo hayas dicho y yo sea novato y no lo haya captado.

A veer si me explico un poco más, como le indico en este codigo que sea HTML, y si puede indicarle que coga la firma, ya coj.....do

Si pongo me da error : // oMail:HtmlBody = cHTML     ->  Error BASE/1003  No existe la variable: CHTML

Code: Select all  Expand view
METHOD SendEmail() CLASS TPreview

   local oMail, cName, cFile,
   ctext:= "   "




   cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )
*   cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ;
*            Left( HB_TToS( HB_DateTime() ), 14 ) + ".pdf"
   cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ".pdf"

   CursorWait()
   cFile := ::SaveAs( .t., cFile, .f. )
   CursorArrow()

   if ! File( cFile )
      MsgInfo( FWString( "PDF not saved to send Email" ), FWString( "Information" ) )
   elseif ::bEmail != nil
      Eval( ::bEmail, Self, cName, cFile )
   else

     if !empty(vmailpre)
      DEFINE MAIL oMail ;
         SUBJECT cName ;
         TEXT ctext ;
         FILES cFile, cFile ;
         FROM USER;
         TO alltrim(vmailpre)

   else
         DEFINE MAIL oMail ;
         SUBJECT cName ;
         TEXT ctext ;
         FILES cFile, cFile ;
         FROM USER
   endif

     // oMail:HtmlBody = cHTML     ->  Error BASE/1003  No existe la variable: CHTML


      ACTIVATE MAIL oMail

      // MsgInfo( oMail:nRetCode )  check the returned code!
   endif

   ::oMeta1:SetFocus()

return nil

Re: Formato Texto en HTML con Define Mail.

PostPosted: Sat Dec 30, 2017 10:31 am
by Antonio Linares
Prueba así:

oMail:HtmlBody = cText

Re: Formato Texto en HTML con Define Mail.

PostPosted: Sat Dec 30, 2017 10:46 am
by Garbi
Maestro me da el siguiente error :
Error description: Error BASE/1005 Message not found: TMAIL:_HTMLBODY
Args:
[ 1] = O TMAIL

Stack Calls
===========
Called from: => __ERRRT_SBASE(0)
Called from: ../../../tobject.prg => TMAIL:ERROR(0)
Called from: ../../../tobject.prg => (b)HBOBJECT(0)
Called from: ../../../tobject.prg => TMAIL:MSGNOTFOUND(0)
Called from: ../../../tobject.prg => TMAIL:_HTMLBODY(0)
Called from: .\rpreview.PRG => TPREVIEW:SENDEMAIL(0)
Called from: .\rpreview.PRG => (b)TPREVIEW_BUILDBUTTONBAR(0)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK(638)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP(872)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(1723)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT(1705)
Called from: .\source\classes\WINDOW.PRG => _FWH(3553)
Called from: => WINRUN(0)
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(1020)
Called from: .\crman.PRG => MAIN(0)



No se si lo pongo en el siguiente correcto :

Code: Select all  Expand view
METHOD SendEmail() CLASS TPreview

   local oMail, cName, cFile
   local ctext:= "   "




   cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )
*   cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ;
*            Left( HB_TToS( HB_DateTime() ), 14 ) + ".pdf"
   cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ".pdf"

   CursorWait()
   cFile := ::SaveAs( .t., cFile, .f. )
   CursorArrow()

   if ! File( cFile )
      MsgInfo( FWString( "PDF not saved to send Email" ), FWString( "Information" ) )
   elseif ::bEmail != nil
      Eval( ::bEmail, Self, cName, cFile )
   else
   if !empty(vmailpre)
      DEFINE MAIL oMail ;
         SUBJECT cName ;
         TEXT ctext ;
         FILES cFile, cFile ;
         FROM USER;
         TO alltrim(vmailpre)

   else
         DEFINE MAIL oMail ;
         SUBJECT cName ;
         TEXT ctext ;
         FILES cFile, cFile ;
         FROM USER
   endif
   oMail:HtmlBody = ctext

      ACTIVATE MAIL oMail

      // MsgInfo( oMail:nRetCode )  check the returned code!
   endif

   ::oMeta1:SetFocus()

return nil

Re: Formato Texto en HTML con Define Mail.

PostPosted: Sat Dec 30, 2017 10:54 am
by Garbi
Hola me he dado cuenta de lo siguiente, sin cambio

local ctext:= " "

por local ctext o por local ctext:= ""

Si que activa el formato de HTML (sin usar oMail:HtmlBody = ctext) pero el problema es que cuando envio el email , ni en enviados ni el receptor aparece nada de texto

Espero haberme explicado.

Si no pongo fichero adjunto si que envía el texto. voy a seguir haciendo pruebas.

Re: Formato Texto en HTML con Define Mail.

PostPosted: Sat Dec 30, 2017 12:39 pm
by Garbi
Resumen :

Si asignado un valor a ctext := " ", el formato del correo se pone en formato sin texto , si no defino nada a ctext -> local ctext el formato si que es formato HMTL

Pero si adjunto fichero y el formato es en HTML, el correo se envia pero en el cuerpo del texto no aparece nada en enviados ni en el receptor tampoco recibe el texto, aunque si haya texto y no se como solucionarlo.

¿alguna idea?

Muchas Gracias

Re: Formato Texto en HTML con Define Mail.

PostPosted: Sat Dec 30, 2017 7:57 pm
by Antonio Linares
Jose Luis,

Me he confundido al responderte:

DEFINE MAIL está basado en MAPI y MAPI no soporta HTML:

https://support.microsoft.com/en-us/help/268440/info-mapi-is-not-suitable-for-html-messages

Tienes que usar un objeto Outlook como te he mostrado para poder usar HTML