2013-05-29 2 views
0

Je suis en train d'écrire une application qui devrait analyser le courrier d'un utilisateur pour des pièces jointes spécifiques et les extraire des messages électroniques. J'utilise Javamail pour me connecter à la boîte aux lettres, récupérer les messages et analyser le contenu de l'e-mail. Lorsque je récupère un message avec une pièce jointe, Javamail me donne un objet MultiPart contenant 3 Bodyparts: le message électronique en texte brut, le message électronique html et la pièce jointe.Ajout d'une pièce jointe Javamail dans google app engine

Toutefois, si j'exécute le même code dans un environnement Google App Engine en récupérant le même message électronique, je reçois uniquement 2 Bodyparts: le message électronique en texte brut et le message électronique html. La pièce jointe est manquante. Le contenu de la pièce jointe est cependant disponible dans le flux d'entrée brut.

Ceci est la partie du code que j'utilise pour récupérer et analyser les messages:

Message[] messages = emailFolder.getMessages(); 
for(Message message : messages) { 
    MimeMessage msg = new MimeMessage(emailSession, message.getInputStream()); 
    if(msg.getContent() instanceof Multipart) { 
     Multipart multipart = (Multipart) msg.getContent(); 
     for(int i = 0; i < multipart.getCount(); i++) { 
      BodyPart bodyPart = multipart.getBodyPart(i); 
      System.out.println("ContentType: " + bodyPart.getContentType()); 
     } 
    } 
} 

Toutes les idées sur ce qui se passe ici? Merci d'avance :-)

Répondre

0

Cela ressemble à un bogue dans Google App Engine.

Vous lisez le même message électronique provenant du même serveur de messagerie, non?

Peut-être que la pièce jointe est supprimée/cachée en raison d'un problème de virus (potentiel)?

Si vous activez le débogage de session JavaMail, que montre la sortie de débogage?

+0

La sortie de débogage est exactement la même dans les deux cas. Le client s'authentifie auprès du serveur et récupère le message. Il montre le message brut avec la pièce jointe codée en Base64. Comment Javamail peut-il se comporter différemment dans un environnement Google App Engine? – User2431975

+0

Téléchargez-vous l'intégralité du message au client ou utilisez-vous IMAP pour télécharger uniquement la pièce jointe lorsque vous en avez besoin? Lisez-vous la pièce jointe en utilisant la méthode getInputStream? Êtes-vous sûr de ne pas avoir d'exception? Utilisez-vous l'implémentation JavaMail fournie par Google? –

+0

Je télécharge le message entier en utilisant POP3. Pas d'exception, pas de pièce jointe. La pièce jointe codée Base64 est présente dans le InputStream brut reçu du serveur POP3, mais pas dans les objets BodyPart analysés. Google propose-t-il une implémentation différente de JavaMail, à l'exception des classes de javax.mail? – User2431975