Lettura mails
Moderator: Enrico Maria Giordano
Lettura mails
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 )
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
L'esempio è mio ma non è corretto. Eccoti la versione attuale.
EMG
Code: Select all
STATIC FUNCTION GETMAIL( cServer, cUser, cPassword )
LOCAL lOk := .F.
LOCAL oCli
LOCAL aMail, aPar, cMsg, oAtt
LOCAL i, j
TRY
oCli = TIPClientPOP():New( "pop://" + STRTRAN( cUser, "@", "&at;" ) + ":" + cPassword + "@" + cServer )
IF EMPTY( oCli ); BREAK; ENDIF
oCli:oUrl:cUserid = cUser
IF !oCli:Open(); BREAK; ENDIF
aMail = oCli:RetrieveAll()
FOR i = 1 TO LEN( aMail ) - 1
cMsg = "Data: " + aMail[ i ]:GetFieldPart( "Date" ) + CRLF +;
"Oggetto: " + aMail[ i ]:GetFieldPart( "Subject" ) + CRLF +;
"Mittente: " + aMail[ i ]:GetFieldPart( "From" ) + CRLF + CRLF
aPar = aMail[ i ]:GetMultiParts()
IF LEN( aPar ) = 0
cMsg += "Messaggio: " + CRLF + CRLF + aMail[ i ]:GetBody()
ELSE
cMsg += "Messaggio: " + CRLF + CRLF + BODY( aPar )
ENDIF
WHILE ( oAtt := aMail[ i ]:NextAttachment() ) != NIL
IF !EMPTY( oAtt:GetFileName() )
cMsg += CRLF + "Allegato: " + oAtt:GetFileName()
// IF !oAtt:DetachFile() THEN BREAK
ENDIF
ENDDO
FOR j = 1 TO LEN( aPar )
WHILE ( oAtt := aPar[ j ]:NextAttachment() ) != NIL
IF !EMPTY( oAtt:GetFileName() )
cMsg += CRLF + "Allegato: " + oAtt:GetFileName()
// IF !oAtt:DetachFile(); BREAK; ENDIF
ENDIF
ENDDO
NEXT
? cMsg
NEXT
lOk = .T.
CATCH
END
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 )
Re: Lettura mails
Grazie Enrico, ma si ferma sull'istruzione:
aMail = oCli:RetrieveAll()
e scarica mega e mega e non esce più !
Scaricherà mica tutta la posta ?
Proverò a lasciarlo acceso tutta la notte e vediamo che succede !
Ciao e buon WE
R
aMail = oCli:RetrieveAll()
e scarica mega e mega e non esce più !
Scaricherà mica tutta la posta ?
Proverò a lasciarlo acceso tutta la notte e vediamo che succede !
Ciao e buon WE
R
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
Certo che scarica tutta la posta! Cosa ti aspettavi, che scaricasse un solo messaggio? Sicuramente si può fare ma non so come. Perché non lo provi con una casella con pochi messaggi?
EMG
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
E comunque in realtà non scarica niente, ma legge in memoria. Immagino che sia per quello che si blocca. Tieni presente che quello è solo un test dal quale poi uno si sviluppa ciò che gli serve realmente.
In ogni caso, con poche email funziona perfettamente. Ma solo POP3 senza SSL. Per SSL bisogna linkare le librerie OpenSSL ma non ho ancora capito come (vedi altro thread).
EMG
In ogni caso, con poche email funziona perfettamente. Ma solo POP3 senza SSL. Per SSL bisogna linkare le librerie OpenSSL ma non ho ancora capito come (vedi altro thread).
EMG
Re: Lettura mails
Ok
Provata su una casella con poche mail e funziona.
Certo che se la casella contiene 10000 msg....... ci vuole un giorno. E poi che senso ha rileggere sempre tutto ?
Mai possibile che non esistono parametri per leggere solo alcune mails, magari per data ricezione ?
Pare imposssibile !
Grazie cmq
A ri-ciao e b we
R
Provata su una casella con poche mail e funziona.
Certo che se la casella contiene 10000 msg....... ci vuole un giorno. E poi che senso ha rileggere sempre tutto ?
Mai possibile che non esistono parametri per leggere solo alcune mails, magari per data ricezione ?
Pare imposssibile !
Grazie cmq
A ri-ciao e b we
R
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
No, il metodo c'è di sicuro. Solo che bisognerebbe studiarsi la classe...
EMG
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
Ho dato uno sguardo e a quanto pare c'è il metodo
dove n è il numero del messaggio da scaricare e oMail è l'oggetto tramite il quale si può accedere ai campi della email e ai suoi eventuali allegati.
EMG
Code: Select all
oMail = oCli:Retrieve( n )
EMG
Re: Lettura mails
Grande Enrico,
vedi che "ravanando" qualcosa si trova.
Certo, sarebbe "ezzziunale verament" riuscire a legge le PEC..
Ma questa è un'altra storia !
Ciao e buon WE
R
vedi che "ravanando" qualcosa si trova.
Certo, sarebbe "ezzziunale verament" riuscire a legge le PEC..
Ma questa è un'altra storia !
Ciao e buon WE
R
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
Nell'altro thread ho riportato anche la soluzione per leggere le PEC.
EMG
EMG
Re: Lettura mails
Scusa Enrico dovè l'altro thread per leggere le PEC ?
Tks
Tks
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Lettura mails
Grazie caro,
appena ho una giornata "SI", ci provo !
Saluti
appena ho una giornata "SI", ci provo !
Saluti