2016-04-07 18 views
1

kullanarak varolan iletiye ek ekle javamail API kullanarak bir IMAP sunucusuna bağlanıyorum ve varolan bir iletiye ek eklemeye çalışıyorum. Javamail API

Aşağıda, iki konuları buldum ama tam olarak yardım etmez çünkü: sonunda

Adding attachment to existing MimeMessage
Add attachments to existing eml file

Aynı şeyi başarmaya çalışıyorum, ama nedense ben bir şey eksik ekli mesaja eklenir, ancak e-postanın içeriğinin biçimi düz metne dönüşür ve tüm içeriği düz metin olarak birbirine karışmış halde görüyorum, sorun nedir?

İleti, bir .eml dosyasından değil, bir IMAP bağlantısından doğrudan okunuyor ve zaten başka eklere ve/veya metin/html içeriğine sahip olabilir.

Kodu: Muhtemelen değiştirmek istiyorum

MimeMessage newmsg = new MimeMessage((MimeMessage) message); 

newmsg.setSubject(new_subj); 
newmsg.setFlag(Flags.Flag.SEEN, false); 

MimeBodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart.attachFile("test.txt"); 

Multipart multipart = (Multipart)message.getContent(); 
multipart.addBodyPart(messageBodyPart); 
newmsg.setContent(multipart); 

newmsg.saveChanges(); 

Folder folder_dest = folder.getFolder("test"); 
folder_dest.appendMessages(new Message[]{newmsg}); 
+0

Hangi JavaMail sürümünü kullanıyorsunuz? –

+0

javamail kullanıyorum 1.5.4 –

cevap

0

Multipart multipart = (Multipart)message.getContent(); 

Multipart multipart = (Multipart)newmsg.getContent(); 

için Ama her ikisine de denedik ve benim için çalıştı. Elbette bu, orijinal mesajın çok parçalı/karışık bir mesaj olmasına bağlıdır.

İşte msgshow.java sample program yapılan değişiklikler bunu test etmek için var:

diff -r 381478f33ec5 demo/src/main/java/msgshow.java 
--- a/demo/src/main/java/msgshow.java Wed Jan 27 17:03:33 2016 -0800 
+++ b/demo/src/main/java/msgshow.java Mon Apr 11 11:39:36 2016 -0700 
@@ -221,7 +221,16 @@ 

        try { 
         m = folder.getMessage(msgnum); 
-      dumpPart(m); 
+      MimeMessage n = new MimeMessage((MimeMessage)m); 
+      n.setSubject("new subject"); 
+      n.setFlag(Flags.Flag.SEEN, false); 
+      MimeBodyPart mbp = new MimeBodyPart(); 
+      mbp.attachFile("test.txt"); 
+      Multipart mp = (Multipart)n.getContent(); 
+      mp.addBodyPart(mbp); 
+      n.setContent(mp); 
+      n.saveChanges(); 
+      dumpPart(n); 
        } catch (IndexOutOfBoundsException iex) { 
         System.out.println("Message number out of range"); 
        } 

o değişikliklerle sorunu yeniden miyim?

+0

Çok teşekkürler ... 'Multipart multipart = (Multipart) newmsg.getContent(); hile yaptı! Gerçekten de, ilk iletinin içeriğini almayı denedim, kopyasını değil. –

İlgili konular