إنشاء ملف يمل (البريد الإلكتروني) في جافا
سؤال
وأي شخص يعرف كيفية القيام بذلك؟ حصلت على كل المعلومات من البريد الإلكتروني (الجسم، الموضوع، من، إلى، سم مكعب، مخفية) وتحتاج إلى إنشاء ملف يمل للخروج منه.
المحلول
ويمكنك بناء 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");