Il metodo getContent()
di javax.Part
restituisce
il contenuto come un oggetto Java. Il tipo dell'oggetto restituito è ovviamente dipendente dal contenuto stesso. Per l'esempio , l'oggetto restituito per il contenuto "text/plain" è in genere un oggetto stringa . L'oggetto restituito per un contenuto "multipart" è sempre una sottoclasse Multipart .
Vedi http://download.oracle.com/javaee/6/api/javax/mail/Part.html#getContent%28%29
Se Message
(che è un Part
) contiene allegati, il metodo getContent restituirà un oggetto Multipart
. Inoltre, è possibile conoscere il tipo MIME della parte con getContentType
.
Le informazioni mancanti nella documentazione sono che questo oggetto MultiPart
restituito da getContent
è solo una rappresentazione vuota della struttura del messaggio. Il contenuto di ogni dello Multipart
verrà prelevato dal server solo quando richiesto espressamente. Ad esempio, per analizzare un multipart Message
si dovrebbe fare:
if(p.isMimeType("multipart/*")) {
Multipart mp = (Multipart)p.getContent();
// the content was not fetched from the server
// parse each Part
for (int i = 0; i < mp.getCount(); i++) {
Part inner_part = mp.getBodyPart(i)
if(inner_part.isMimeType("text/plain")) {
String text = inner_part.getText();
// the content of this Part was fetched from the server
}
}
}
Un'altra cosa da considerare è che per ottenere prestazioni ottimali si dovrebbe ottenere le informazioni struttura della carrozzeria dal server in modalità batch per la raccolta di messaggi che si desidera analizzare (vedi http://download.oracle.com/javaee/6/api/javax/mail/FetchProfile.Item.html#CONTENT_INFO). In caso contrario, ogni
Multipart mp = (Multipart)p.getContent();
si tradurrà in una richiesta al server per recuperare la struttura del corpo. Se viene utilizzato l'approccio FetchProfile
, la struttura del corpo per la raccolta di messaggi verrà recuperata con una sola richiesta. È possibile vedere le richieste al server nel registro se si attiva la modalità di debug sulla sessione:
session.setDebug(true);
Detto questo, per ottenere dimensioni e nomi dei file allegati basta usare rispettivamente Part.getSize()
e Part.getFileName()
,.
fonte
2011-01-12 14:01:45