سؤال

وأي شخص يعرف كيفية القيام بذلك؟ حصلت على كل المعلومات من البريد الإلكتروني (الجسم، الموضوع، من، إلى، سم مكعب، مخفية) وتحتاج إلى إنشاء ملف يمل للخروج منه.

هل كانت مفيدة؟

المحلول

ويمكنك بناء javax.mail.Message الكائن ( أو أنها قد شيدت بالفعل من خادم البريد) وبعد ذلك يمكنك استخدام <لأ href = "https://javaee-spec.java.net/nonav/javadocs/javax/mail/internet/MimeMessage.html#writeTo٪28java. io.OutputStream٪ 29 "يختلط =" noreferrer "> writeTo() طريقة لحفظه إلى ملف. انظر JavaMail API للحصول على مزيد من المعلومات.

نصائح أخرى

ويمكنك إنشاء ملفات يمل مع التعليمات البرمجية التالية. أنه يعمل بشكل جيد مع طائر الرعد، وربما مع عملاء البريد الإلكتروني الأخرى:

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);
    }
}

وملفات EML ليست سوى ملفات النص العادي. يتم فصل رؤوس من الجسم عن طريق سطر فارغ. رؤوس تبدو مثل هذا:

From: "DR CLEMENT OKON" <drclement@nigerianspam.com>
To: "You" <you@yourdomain.com>
Subject: REQUEST FOR URGENT BUSINESS RELATIONSHIP 
Date: Tue, 30 Sep 2008 09:42:47 -0400

لمزيد من المعلومات، والمواصفات الرسمية هي href="http://www.faqs.org/rfcs/rfc2822.html" RFC 2822 . انها في الواقع ليس من الصعب ليصبح نصها كما بعض المراجع.

وتحرير: عندما قلت "نص عادي" كان يجب أن يعتقد للحظة واحدة. أنا حقا يعني ASCII عادي - وليس 8 بت "ASCII الموسعة" إما - فقط ما يصل الى الطابع 127. إذا كنت تريد أكثر من سبعة أجزاء، تحتاج نوعا من الترميز والأمور تتعقد

والنظر إلى EML نموذجي ملف يبدو وكأنه تفريغ الخام البلاغ النص الذي ذهب إلى الخادم. لذلك هو ملف نصي يحتوي على رؤوس البريد والجسم. للحصول على المرفقات، وجهات نظر مختلفة، وغيرها في التنسيق الصحيح داخل EML الملفات تحتاج إلى MIME ترميز الجسم وأجزائه.

إذا كنت ترغب في إضافة HTML الاشياء لديك لإضافة

content.setHeader("Content-Type", "text/html"); 

و(كما قال ماركو سولا)، ولكن أيضا تغيير

message.setContent(multipart);

إلى

message.setContent(multipart,"text/html");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top