Lettura mails
Posted: Fri Jan 25, 2019 5:52 pm
Ciao,
qualcuno ha qualche esempio minimale per leggere le mails con harbour/fw ?
Ho trovato questo esempio nel forum, ma non va, forse perchè è per xHarbour: (qualche dritta ?)
(ho notato che sta fermo su: aMail = oCli:RetrieveAll() per ore e continua a scaricare dati da internet)
(ho usato pop.tiscali.it, userid,password)
STATIC FUNCTION GETMAIL( cServer, cUser, cPassword )
LOCAL lOk := .F.
LOCAL oCli
LOCAL aMail, aPar, cMsg, oAtt
LOCAL i
cUser := StrTran( cUser, "@", "&at;" )
oCli = TIPClientPOP():New( "pop://" + cUser + ":" + cPassword + "@" + cServer )
IF EMPTY( oCli ); BREAK; ENDIF
oCli:oUrl:cUserid = Strtran( cUser, "&at;", "@" )
IF !oCli:Open(); BREAK; ENDIF
aMail = oCli:RetrieveAll()
FOR i = 1 TO LEN( aMail ) - 1
aPar = aMail[ i ]:GetMultiParts()
IF LEN( aPar ) = 0
cMsg = "Data: " + aMail[ i ]:GetFieldPart( "Date" ) + CRLF +;
"Oggetto: " + aMail[ i ]:GetFieldPart( "Subject" ) + CRLF +;
"Mittente: " + aMail[ i ]:GetFieldPart( "From" ) + CRLF + CRLF +;
"Messaggio: " + CRLF + CRLF + aMail[ i ]:GetBody()
ELSE
cMsg = "Data: " + aMail[ i ]:GetFieldPart( "Date" ) + CRLF +;
"Oggetto: " + aMail[ i ]:GetFieldPart( "Subject" ) + CRLF +;
"Mittente: " + aMail[ i ]:GetFieldPart( "From" ) + CRLF + CRLF +;
"Messaggio: " + CRLF + CRLF + BODY( aPar )
ENDIF
WHILE ( oAtt := aMail[ i ]:NextAttachment() ) != NIL
IF !EMPTY( oAtt:GetFileName() )
cMsg += CRLF + "Allegato: " + oAtt:GetFileName()
// IF !oAtt:DetachFile(); BREAK; ENDIF
ENDIF
ENDDO
? cMsg
NEXT
lOk = .T.
IF !EMPTY( oCli ); oCli:Close(); ENDIF
RETURN lOk
STATIC FUNCTION BODY( aPar )
LOCAL cMsg := ""
LOCAL i
FOR i = 1 TO LEN( aPar )
IF EMPTY( aPar[ i ]:GetFieldPart( "Content-Disposition" ) )
cMsg += aPar[ i ]:GetBody()
ENDIF
NEXT
RETURN ALLTRIM( cMsg )
qualcuno ha qualche esempio minimale per leggere le mails con harbour/fw ?
Ho trovato questo esempio nel forum, ma non va, forse perchè è per xHarbour: (qualche dritta ?)
(ho notato che sta fermo su: aMail = oCli:RetrieveAll() per ore e continua a scaricare dati da internet)
(ho usato pop.tiscali.it, userid,password)
STATIC FUNCTION GETMAIL( cServer, cUser, cPassword )
LOCAL lOk := .F.
LOCAL oCli
LOCAL aMail, aPar, cMsg, oAtt
LOCAL i
cUser := StrTran( cUser, "@", "&at;" )
oCli = TIPClientPOP():New( "pop://" + cUser + ":" + cPassword + "@" + cServer )
IF EMPTY( oCli ); BREAK; ENDIF
oCli:oUrl:cUserid = Strtran( cUser, "&at;", "@" )
IF !oCli:Open(); BREAK; ENDIF
aMail = oCli:RetrieveAll()
FOR i = 1 TO LEN( aMail ) - 1
aPar = aMail[ i ]:GetMultiParts()
IF LEN( aPar ) = 0
cMsg = "Data: " + aMail[ i ]:GetFieldPart( "Date" ) + CRLF +;
"Oggetto: " + aMail[ i ]:GetFieldPart( "Subject" ) + CRLF +;
"Mittente: " + aMail[ i ]:GetFieldPart( "From" ) + CRLF + CRLF +;
"Messaggio: " + CRLF + CRLF + aMail[ i ]:GetBody()
ELSE
cMsg = "Data: " + aMail[ i ]:GetFieldPart( "Date" ) + CRLF +;
"Oggetto: " + aMail[ i ]:GetFieldPart( "Subject" ) + CRLF +;
"Mittente: " + aMail[ i ]:GetFieldPart( "From" ) + CRLF + CRLF +;
"Messaggio: " + CRLF + CRLF + BODY( aPar )
ENDIF
WHILE ( oAtt := aMail[ i ]:NextAttachment() ) != NIL
IF !EMPTY( oAtt:GetFileName() )
cMsg += CRLF + "Allegato: " + oAtt:GetFileName()
// IF !oAtt:DetachFile(); BREAK; ENDIF
ENDIF
ENDDO
? cMsg
NEXT
lOk = .T.
IF !EMPTY( oCli ); oCli:Close(); ENDIF
RETURN lOk
STATIC FUNCTION BODY( aPar )
LOCAL cMsg := ""
LOCAL i
FOR i = 1 TO LEN( aPar )
IF EMPTY( aPar[ i ]:GetFieldPart( "Content-Disposition" ) )
cMsg += aPar[ i ]:GetBody()
ENDIF
NEXT
RETURN ALLTRIM( cMsg )