2012-12-12 1 views
1

Je travaille avec un ensemble de serveurs de messagerie spécialisés qui sont configurés pour renvoyer les notifications de disposition de message (MDN) à la réception du message. J'ai développé un client Javamail qui est utilisé pour envoyer des messages à l'un de ces serveurs et récupérer les MDN retournés à partir du dossier POP3 INBOX de l'utilisateur.Utilisation de DispositionNotification avec Javamail

Comment puis-je obtenir la partie du corps de notification de disposition à partir du MimeMessage que je récupère dans la boîte de réception de l'utilisateur? J'ai trouvé la classe com.sun.mail.dsn.DispositionNotification mais ne l'ai pas vu un exemple de la façon de créer correctement une instance d'un DispositionNotification utilisant le constructeur:

DispositionNotification(InputStream) 

Dois-je pouvoir obtenir le InputStream à partir d'un MimeMessage et l'utiliser pour créer la DispositionNotification, comme ça?

Message[] msgs = getInboxMessages();  
DispositionNotification dn = new DispositionNotification(msgs[0].getInputStream(); 

Ou y a-t-il un autre moyen de le faire?

Répondre

0

La méthode getContent d'un tel message doit renvoyer un objet MultipartReport (une sous-classe spéciale de l'objet MimeMultipart habituel), à partir duquel vous pouvez accéder aux parties du rapport. La méthode MultipartReport.getReport() renvoie un objet DeliveryStatus ou DispositionNotification, selon le type du rapport.

+0

@Bill_Shannon Cela a été très utile pour me montrer dans la bonne direction. Merci! – user1899331

+0

MultipartReport report = (MultipartReport) msgs [i] .getContent(); if (msgs [i] .getContentType(). Contient ("disposition-notification")) { DispositionNotification dn = (DispositionNotification) report.getReport(); InternetHeaders inetHeaders = dn.getNotifications(); Enumeration headers = inetHeaders.getAllHeaders(); Chaîne msgId = inetHeaders.getHeader ("Original-Message-ID", ";"); Chaîne disp = inetHeaders.getHeader ("Disposition", ";"); } – user1899331