Page 1 of 1
view Email Body "DOCTYPE html"
Posted: Sat Nov 23, 2019 9:48 pm
by AUGE_OHR
hi,
i can send / receive Email with hbTIP but there is still a Question : how to view / Print a Email Body
Code: Select all
cBody := aEmail:getBody()
DO CASE
CASE "DOCTYPE html" $ cBody
STRFILE(cBody,cFileName)
RUN myView(cFileName)
as i don't know Email Structure my Question is : can i show a Body with "DOCTYPE html" in a HTML Viewer

Re: view Email Body "DOCTYPE html"
Posted: Sun Nov 24, 2019 1:38 am
by danielmaximiliano
My code
Code: Select all
#define CRLF INetCRLF()
#require "hbtip"
REQUEST __HBEXTERN__HBSSL__
Code: Select all
/*****************************************************************************/
Procedure Email_GetBody()
/*****************************************************************************/
lResetServer := oPopServer:Reset()
cMail := oPopServer:retrieve( Incomming.Messages.Value )
If oPopServer:lastErrorCode() != 0
MsgInfo( 'The message does not exist or was deleted ' + Chr( 10 ) +;
'Server responds : ' + oPopServer:lastErrorMessage() ,;
' Attention Message ' )
oPopServer:Close()
lOpen := .F.
Incomming.Connect.Enabled := .T.
Incomming.ReadTray.Enabled := .F.
Incomming.Messages.DeleteAllItems
Incomming.LabelServer.Hide
Incomming.LabelReply.Hide
Incomming.Server.Show
Incomming.cPass.Show
Incomming.cUser.Show
Incomming.User_1.Show
Incomming.Pass_1.Show
Return
Endif
aEmail := TIPMail():new()
oEmail := aEmail:fromString( cMail )
IF aEmail:isMultiPart()
// Retrieve all parts of a multipart message
aParts := aEmail:getMultiParts( )
/* through all parts of the eMail */
FOR EACH oPart IN aParts
IF .NOT. Empty( oPart:getFileName() )
If MsgYesNo(' download the attachment : ' + oPart:getFileName() , ;
' Select Y / N ' )
// This is a file attachment. Store it in the TMP folder.
IF .NOT. oPart:detachFile( cCurrentFolder+'\Attachment' )
MsgExclamation('Could not save the file : ' + oPart:getFileName() , ' !! Warning Message ¡¡ ' )
ENDIF
Endif
ELSE
CreateHtml(oPart:getBody() , oPart:GetFieldPart( "Content-Type" ))
Endif
NEXT
ELSE // Is simple eMail message
CreateHtml(aEmail:getBody() , aEmail:GetFieldPart( "Content-Type" ))
Endif
Return
Code: Select all
/*****************************************************************************/
Function CreateHtml( cStringBody , cEmailType )
/*****************************************************************************/
LOCAL oHTML := THtml():New()
oHTML:SetTitle( 'HBTIP' )
oHTML:AddPara( cStringBody , "LEFT" )
oHTML:Generate()
oHTML:SaveToFile( cCurrentFolder + '/Html/email.html' )
Incomming.oBody.Object:Navigate('file:///' + cCurrentFolder + '/Html/email.html')
RETURN
Re: view Email Body "DOCTYPE html"
Posted: Sun Nov 24, 2019 2:42 am
by AUGE_OHR
WOW ... so "easy" if know how
THX
Re: view Email Body "DOCTYPE html"
Posted: Sun Nov 24, 2019 3:27 am
by AUGE_OHR
hi,
Question about THTML() : is it from HMG

- THTML_ERROR.jpg (44.15 KiB) Viewed 2518 times
when search in HMG DOC it have other Syntax
Description
THtml() is a class that creates an .html file of the same name you pass to the constructor.
The class methods are as follows:
New(<cFile>) Create a new instance of the THtml class
Close() Close the created file
WriteTitle(<cTitle>) Write the file title
WritePar(<cPar>) Writes a paragraph
WriteParBold(<cPar>) Same as WritePar(), but the text is
WriteLink(<cLink>,<cName>) Write a link to another topic
WriteText(<cText>) Write any text
so none of your Method exist
Code: Select all
oHTML:SetTitle( 'HBTIP' )
oHTML:AddPara( cStringBody , "LEFT" )
oHTML:Generate()
oHTML:SaveToFile( cCurrentFolder + '/Html/email.html' )
so where is your CLASS Thtml() come from

thx for help
Re: view Email Body "DOCTYPE html"
Posted: Mon Nov 25, 2019 8:06 am
by AUGE_OHR
i have test it with QHTM() ... it work general but to much empty "frame" (did not download Images)
have to make more test to get "only" text to read
Re: view Email Body "DOCTYPE html"
Posted: Mon Nov 25, 2019 8:21 am
by AUGE_OHR
hi,
i get Email where Body is empty ... hm
than i saw this in Email Source
Content-Type: multipart/related;
boundary="----=_Part_54615146_1810148544.1574637521787"
------=_Part_54615146_1810148544.1574637521787
Content-Type: text/html; charset=UTF-8;
Content-Transfer-Encoding: quoted-printable
so how get that Part
here is the EML File
Code: Select all
IF aEmail:isMultiPart()
// odczytanie wszystkich cze˜ci wiadomo˜ci
// reading all parts of the message
aParts := aEmail:getMultiParts()
nPart := 0
FOR EACH oPart IN aParts
i got in aParts[1]:cBody what i want but i can't access it.
Error BASE/41 Scope violation (hidden): TIPMAIL:CBODY
Called from TIPMAIL:CBODY(0)
Called from GETEMAIL(436)
Called from (b)MAIN(81)
Called from _PROCESSINITPROCEDURE(5876)
Called from _ACTIVATEWINDOW(5627)
Called from MAIN(172)
who can help please.
Re: view Email Body "DOCTYPE html"
Posted: Mon Nov 25, 2019 11:24 am
by danielmaximiliano
AUGE_OHR wrote: ↑Mon Nov 25, 2019 8:06 am
i have test it with QHTM() ... it work general but to much empty "frame" (did not download Images)
have to make more test to get "only" text to read
Code: Select all
#include "hbclass.ch"
CREATE CLASS THTML
VAR cTitle // Page Title
VAR cBody // HTML Body Handler
VAR cBGColor // Background Color
VAR cLinkColor // Link Color
VAR cvLinkColor // Visited Link Color
VAR cContent // Page Content Handler
METHOD New() // New Method
METHOD SetTitle( cTitle ) // Set Page Title
METHOD AddLink( cLinkTo, cLinkName ) // Add <H1> Header
METHOD AddHead( cDescr ) // Add Hyperlink
METHOD AddPara( cPara, cAlign ) // Add Paragraph
METHOD Generate() // Generate HTML
METHOD SaveToFile( cFile ) // Show Result
END CLASS
METHOD New() CLASS THTML
::cTitle := "Untitled"
::cBGColor := "#FFFFFF"
::cLinkColor := "#0000FF"
::cvLinkColor := "#FF0000"
::cContent := ""
::cBody := ""
RETURN Self
METHOD SetTitle( cTitle ) CLASS THTML
::cTitle := cTitle
RETURN Self
METHOD AddLink( cLinkTo, cLinkName ) CLASS THTML
::cBody := ::cBody + ;
"<a href='" + cLinkTo + "'>" + cLinkName + "</a>"
RETURN Self
METHOD AddHead( cDescr ) CLASS THTML
// Why this doesn't work?
// ::cBody += ...
// ???
::cBody := ::cBody + ;
"<h1>" + cDescr + "</h1>"
RETURN NIL
METHOD AddPara( cPara, cAlign ) CLASS THTML
cAlign := iif( cAlign == NIL, "Left", cAlign ) // Added Patrick Mast 2000-06-17
::cBody := ::cBody + ;
"<p align='" + cAlign + "'>" + hb_eol() + ;
cPara + hb_eol() + ;
"</p>"
RETURN Self
METHOD Generate() CLASS THTML
::cContent := ;
"<html><head>" + hb_eol() + ;
"<title>" + ::cTitle + "</title>" + hb_eol() + ;
"<body link='" + ::cLinkColor + "' " + ;
"vlink='" + ::cvLinkColor + "'>" + + hb_eol() + ;
::cBody + hb_eol() + ;
"</body></html>"
RETURN Self
METHOD SaveToFile( cFile ) CLASS THTML
LOCAL hFile := FCreate( cFile )
FWrite( hFile, ::cContent )
FClose( hFile )
RETURN Self
Re: view Email Body "DOCTYPE html"
Posted: Mon Nov 25, 2019 9:19 pm
by AUGE_OHR
hi,
your CLASS Thtml work much better for what i want, THX