2008-10-01 6 views
16

में कोई .eml (ईमेल) फ़ाइल बनाएं कोई भी जानता है कि यह कैसे करें? मुझे ईमेल (बॉडी, विषय, से, से, सीसी, बीसीसी) की सारी जानकारी मिली है और इसमें से एक .eml फ़ाइल उत्पन्न करने की आवश्यकता है।जावा

उत्तर

18

आप javax.mail.Message ऑब्जेक्ट (या इसे पहले से ही मेल सर्वर से बनाया गया है) बना सकते हैं और फिर आप फ़ाइल को सहेजने के लिए writeTo() विधि का उपयोग कर सकते हैं। अधिक जानकारी के लिए JavaMail API देखें।

+0

... पैकेज javax.mail मौजूद नहीं है – Supuhstar

+1

@Supuhstar - पुराना धागा लेकिन किसी और इस पढ़ने के लिए, इस javamail एपीआई पर निर्भर करता है। – berry120

9

ईएमएल फ़ाइलें केवल सादा पाठ फ़ाइलें हैं। हेडर को शरीर से एक खाली रेखा से अलग किया जाता है। हेडर इस तरह दिखेगा:

From: "DR CLEMENT OKON" <[email protected]> 
To: "You" <[email protected]> 
Subject: REQUEST FOR URGENT BUSINESS RELATIONSHIP 
Date: Tue, 30 Sep 2008 09:42:47 -0400 

अधिक जानकारी के लिए, सरकारी कल्पना RFC 2822 है। वास्तव में कुछ आरएफसी के रूप में पढ़ने के लिए मुश्किल नहीं है।

संपादित करें: जब मैंने कहा "सादा पाठ" मुझे एक सेकंड के लिए सोचना चाहिए था। मैं वास्तव में सादा ASCII का मतलब था - और 8-बिट "विस्तारित ASCII" या तो चरित्र 127 तक नहीं। यदि आप सात से अधिक बिट्स चाहते हैं, तो आपको किसी प्रकार की एन्कोडिंग की आवश्यकता है और चीजें जटिल हो जाती हैं।

1

एक सामान्य ईएमएल फ़ाइल को देखते हुए यह सर्वर संचार के पाठ संचार के कच्चे डंप की तरह दिखता है। तो यह एक टेक्स्ट फ़ाइल है जिसमें मेल हेडर और बॉडी है। ईएमएल फ़ाइल के अंदर सही प्रारूप में अपने अनुलग्नक, अलग-अलग विचार आदि प्राप्त करने के लिए आपको शरीर और उसके हिस्सों को एमआईएम-एन्कोड करने की आवश्यकता है।

19

आप निम्न कोड के साथ एमएमएल फाइलें बना सकते हैं। यह अन्य ईमेल ग्राहकों के साथ थंडरबर्ड के साथ ठीक है और शायद काम करता है:

public static void createMessage(String to, String from, String subject, String body, List<File> attachments) { 
    try { 
     Message message = new MimeMessage(Session.getInstance(System.getProperties())); 
     message.setFrom(new InternetAddress(from)); 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 
     message.setSubject(subject); 
     // create the message part 
     MimeBodyPart content = new MimeBodyPart(); 
     // fill message 
     content.setText(body); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(content); 
     // add attachments 
     for(File file : attachments) { 
      MimeBodyPart attachment = new MimeBodyPart(); 
      DataSource source = new FileDataSource(file); 
      attachment.setDataHandler(new DataHandler(source)); 
      attachment.setFileName(file.getName()); 
      multipart.addBodyPart(attachment); 
     } 
     // integration 
     message.setContent(multipart); 
     // store file 
     message.writeTo(new FileOutputStream(new File("c:/mail.eml"))); 
    } catch (MessagingException ex) { 
     Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+0

एक HTML संदेश को सहेजने के लिए, 'content.setHeader ("सामग्री-प्रकार", "टेक्स्ट/एचटीएमएल") जोड़ें; ' –