עבודה עם קבצים מצורפים ופריטים משובצים
ניהול קבצים מצורפים לאימייל
קובץ מצורף לאימייל הוא קובץ שנשלח יחד עם הודעת אימייל. הקובץ יכול להישלח כהודעה נפרדת וכן כחלק מההודעה אליה הוא מצורף. ה‑ Attachment class משמש עם ה‑ MailMessage class. כל הודעה כוללת גוף. בנוסף לגוף, ייתכן שתרצו לשלוח קבצים נוספים. קבצים אלה נשלחים כקבצים מצורפים ומיוצגים כמופע של Attachment class. ניתן לשלוח מספר בלתי מוגבל של קבצים מצורפים אך גודלם מוגבל על ידי שרת הדואר. Gmail, לדוגמה, לא תומך בקבצים גדולים מ‑10 מ״ב.
נסו זאת!
הוסף או הסר קבצים מצורפים למייל אונליין עם ה‑ Aspose.Email Editor App.
הוספת קובץ מצורף
להוספת קובץ מצורף לדוא"ל, אנא פעל לפי הצעדים:
- צור מופע של MailMessage מחלקה.
- צור מופע של Attachment מחלקה.
- טען קובץ מצורף אל ה- Attachment מופע.
- הוסף את ה- Attachment מופע לתוך ה- MailMessage מופע.
קטע הקוד הבא מראה כיצד להוסיף קובץ מצורף לדוא"ל.
// Create an instance of MailMessage class
MailMessage message = new MailMessage();
message.setFrom(new MailAddress("sender@from.com"));
message.getTo().add("receiver@to.com");
message.setSubject("This is message");
message.setBody("This is body");
// Load an attachment
Attachment attachment = new Attachment("1.txt");
// Add Multiple Attachment in instance of MailMessage class and Save message to disk
message.getAttachments().addItem(attachment);
message.addAttachment(new Attachment("1.jpg"));
message.addAttachment(new Attachment("1.doc"));
message.addAttachment(new Attachment("1.rar"));
message.addAttachment(new Attachment("1.pdf"));
message.save("AddAttachments.eml");
מעלה תיארנו כיצד להוסיף קבצים מצורפים להודעת הדוא"ל שלך עם Aspose.Email. מה שבא אחר כך מציג כיצד להסיר קבצים מצורפים ולהציג מידע אודותיהם על המסך.
הסרת קובץ מצורף
להסרת קובץ מצורף, פעל לפי הצעדים הבאים:
- צור מופע של Attachment מחלקה.
- טען קובץ מצורף במופע של Attachment מחלקה.
- הוסף את הקובץ המצורף למופע של MailMessage מחלקה.
- הסר את הקבצים המצורפים מהמופע של Attachment מחלקה באמצעות ה- MailMessage מופע של מחלקה.
קטע הקוד הבא מראה כיצד להסיר קובץ מצורף.
// Create an instance of MailMessage class
MailMessage eml = new MailMessage();
eml.setFrom(new MailAddress("sender@from.com"));
eml.getTo().add("receiver@to.com");
// Load an attachment
Attachment attachment = new Attachment("1.txt");
eml.getAttachments().addItem(attachment);
// Remove attachment from your MailMessage
eml.getAttachments().removeItem(attachment);
הצגת שם קובץ מצורף
כדי להציג את שם הקובץ המצורף, פעל לפי הצעדים:
- בצע לולאה על הקבצים המצורפים בהודעת הדוא"ל ו-
- שמור כל קובץ מצורף.
- הצג את שם כל קובץ מצורף על המסך.
קטע הקוד הבא מראה כיצד להציג על המסך את שם הקובץ המצורף.
MailMessage eml = MailMessage.load("Attachments.eml");
for (Attachment attachment : eml.getAttachments()) {
// Display the attachment file name
System.out.println(attachment.getName());
}
חילוץ קבצים מצורפים מדוא"ל
הנושא הזה מסביר כיצד לחלץ קובץ מצורף מקובץ דוא"ל. קובץ מצורף לדוא"ל הוא קובץ שנשלח יחד עם הודעת דוא"ל. הקובץ יכול להישלח כהודעה נפרדת וכן כחלק מההודעה אליה הוא מצורף. לכל הודעת דוא"ל יש אפשרות לשלוח קבצים נוספים. קבצים אלה נשלחים כקבצים מצורפים ומיוצגים כמופעים של ה- Attachment מחלקה. ה- Attachment class משמש עם ה‑ MailMessage מחלקה לעבודה עם קבצים מצורפים. כדי לחלץ קבצים מצורפים מהודעת דוא"ל, פעל לפי הצעדים:
- צור מופע של MailMessage מחלקה.
- טען קובץ דוא"ל אל ה- MailMessage מופע.
- צור מופע של Attachment מחלקה ושימוש בה בלולאה לחילוץ כל הקבצים המצורפים.
- שמור את הקובץ המצורף והצג אותו על המסך.
|קבצים מצורפים שחולצו בדוא"ל| | :- | |
| קטע הקוד הבא מראה כיצד לחלץ קבצים מצורפים מדוא"ל.
MailMessage eml = MailMessage.load("Message.eml", new MsgLoadOptions());
for (Attachment attachment : eml.getAttachments()) {
attachment.save("MessageEmbedded_out.eml");
System.out.println(attachment.getName());
}
קבלת Content-Description מקובץ מצורף
ה-API של Aspose.Email מספקת אפשרות לקרוא את התיאור (Content-Description) של קובץ מצורף מכותרת הקובץ. קטע הקוד הבא מראה כיצד לקבל את התיאור מהקובץ המצורף.
MailMessage eml = MailMessage.load("EmailWithAttachEmbedded.eml");
System.out.println(eml.getAttachments().get_Item(0).getHeaders().get_Item("Content-Description"));
קביעת האם קובץ מצורף הוא הודעה משובצת
קטע הקוד הבא מדגים כיצד לקבוע אם הקובץ המצורף הוא הודעה משובצת או לא.
MailMessage eml = MailMessage.load("EmailWithAttachEmbedded.eml");
System.out.println(eml.getAttachments().get_Item(0).isEmbeddedMessage()
? "Attachment is an embedded message."
: "Attachment isn't an embedded message.");
קביעת קבצים מצורפים בתצורת TNEF
ה Attachment.isTnef המאפיין של Aspose.Email API ב-Java מצביע האם קובץ המצורף הוא הודעה בתצורת TNEF.
קטע הקוד הבא מדגים כיצד לקבוע אם קובץ מצורף מתוצרת TNEF:
MailMessage eml = MailMessage.load(fileName);
for (Attachment attachment : eml.getAttachments()) {
System.out.println("Is Attachment TNEF?: " + attachment.isTnef());
}
טעינה ושמירה של קבצים מצורפים TNEF
Aspose.Email for Java מספקת מתודות ב- MapiAttachment מחלקה לביצוע הפעולות הבאות:
טעינה מ‑TNEF
-
static MapiAttachment loadFromTnef(String fileName)– טוען קובץ מצורף מקובץ TNEF. -
static MapiAttachment loadFromTnef(InputStream stream)– טוען קובץ מצורף מזרם TNEF.
שמירה ל‑TNEF
-
void saveToTnef(String fileName)– שומר קובץ מצורף לקובץ TNEF. -
void saveToTnef(OutputStream stream)– שומר קובץ מצורף לזרם TNEF.
דוגמת הקוד הבאה מדגימה כיצד לחלץ קובץ מצורף TNEF מהודעה, לשמור אותו לזרם או לקובץ, ואז לטעון אותו חזרה להודעה כ- MapiAttachment:
// Load message containing a TNEF attachment (winmail.dat)
MapiMessage msg = MapiMessage.load("message.eml");
// Save the first attachment to a TNEF stream
ByteArrayOutputStream bos = new ByteArrayOutputStream();
msg.getAttachments().get(0).saveToTnef(bos);
// Load attachment back from the TNEF stream
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
MapiAttachment fromtnefAttachment = MapiAttachment.loadFromTnef(bis);
msg.getAttachments().addMapiAttachment(fromtnefAttachment);
// Load TNEF attachment directly from a file
fromtnefAttachment = MapiAttachment.loadFromTnef("winmail.dat");
msg.getAttachments().addMapiAttachment(fromtnefAttachment);
חילוץ URI של קובץ מצורף אם הקובץ הוא קובץ מצורף מסוג URI
קטע הקוד הבא מדגים כיצד לחלץ URI של קובץ מצורף.
MailMessage eml = MailMessage.load("fileName");
Attachment attachment = eml.getAttachments().get_Item(0);
if (attachment.isUri()) {
InputStream inputStream = attachment.getContentStream();
String uri = new String(IOUtils.toByteArray(inputStream), Charset.forName("utf-8"));
System.out.println("Attachment URI: " + uri);
}
הוספת קבצים מצורפים ברפרנס
קובץ מצורף ברפרנס הוא חלופה לקובץ מצורף מקומי. במקרים מסוימים, קבצים מצורפים ברפרנס עשויים להיות מועדפים, לדוגמה אם ברצונך לנהל את הגישה אליהם. המחלקות שלהלן משמשות לניהול ושינויים בהודעות דוא"ל ובקבצים המצורפים אליהן:
- ReferenceAttachment - מייצג קובץ מצורף ברפרנס.
- AttachmentPermissionType - נתוני סוג ההרשאה המשוייכים לקובץ מצורף של הפנייה לאינטרנט.
- AttachmentProviderType - סוג שירות האינטרנט המנהל את הקובץ המצורף.
דוגמת הקוד הבאה מדגימה כיצד לטעון הודעת דוא"ל מקובץ, ליצור קובץ מצורף מסוג רפרנס עם מאפיינים ספציפיים, ולהוסיף את הקובץ המצורף להודעת הדוא"ל:
MailMessage eml = MailMessage.load("fileName");
ReferenceAttachment refAttach = new ReferenceAttachment("https://[attach_uri]")
refAttach.setName("Document.docx");
refAttach.setProviderType(AttachmentProviderType.OneDrivePro);
refAttach.setPermissionType(AttachmentPermissionType.AnyoneCanEdit);
eml.getAttachments().addItem(refAttach);
עבודה עם אובייקטים משובצים
אובייקט משובץ הוא אובייקט שנוצר בתוכנה אחת והוכנס בתוך מסמך או קובץ שנוצר בתוכנה אחרת. לדוגמה, גליון Excel של מיקרוסופט יכול להיות משובץ בדוח Word של מיקרוסופט, או קובץ וידאו יכול להיות משובץ במצגת PowerPoint של מיקרוסופט. כאשר קובץ משובץ, במקום להוכנס או להודבק למסמך אחר, הוא שומר על הפורמט המקורי שלו. המסמך המשובץ ניתן לפתיחה בתוכנה המקורית ולשינוי.
שיבוץ אובייקטים בדוא"ל
ה LinkedResource class משמש עם ה‑ MailMessage מחלקה לשיבוץ אובייקטים בהודעות הדוא"ל שלך. כדי להוסיף אובייקט משובץ, פעל לפי הצעדים הבאים
- צור מופע של MailMessage מחלקה.
- ציין את ערכי השולח, הנמען והנושא ב- MailMessage מופע.
- צור מופע של AlternateView מחלקה.
- צור מופע של LinkedResource מחלקה.
- טען אובייקט משובץ לתוך ה- LinkedResourceCollection.
- הוסף את האובייקט המשובץ שהטענו לתוך ה- MailMessage מופע של מחלקה.
- הוסף את ה- AlternateView מופע ל- MailMessage מופע של מחלקה.
קטעי הקוד למטה מייצרים הודעת דוא"ל עם גופים בטקסט פשוט וב-HTML ותמונה משובצת ב-HTML
|תמונה משובצת בדוא"ל| | :- | |
| ניתן לשלוח מספר בלתי מוגבל של אובייקטים משובצים. גודל הקובץ המצורף מוגבל על ידי שרת הדוא"ל. Gmail, לדוגמה, אינו תומך בקבצים גדולים מ-10MB. קטעי הקוד למטה מדגימים כיצד לשבץ אובייקטים בתוך דוא"ל.
// Create an instance of the MailMessage class and Set the addresses and Set the content
MailMessage mail = new MailMessage();
mail.setFrom(new MailAddress("sender@from.com"));
mail.getTo().add("receiver@to.com");
mail.setSubject("This is an email");
// Create the plain text part It is viewable by those clients that don't support HTML
AlternateView plainView = AlternateView.createAlternateViewFromString("This is my plain text content", null, "text/plain");
// Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value.
// The cid value will map to the Content-Id of a Linked resource.
// Thus <img src='cid:barcode'> will map to a LinkedResource with a ContentId of //'barcode'.
AlternateView htmlView = AlternateView.createAlternateViewFromString("Here is an embedded image.<img src=cid:barcode>", null, "text/html");
// Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view
LinkedResource barcode = new LinkedResource("1.jpg", MediaTypeNames.Image.JPEG);
barcode.setContentId("barcode");
mail.getLinkedResources().addItem(barcode);
mail.getAlternateViews().addItem(plainView);
mail.getAlternateViews().addItem(htmlView);
mail.save("EmbeddedImage_out.msg", SaveOptions.getDefaultMsgUnicode());
הסרת אובייקטים משובצים מדוא"ל
LinkedResourceCollection נגישה דרך MailMessage.LinkedResources המאפיין. ה- LinkedResourceCollection האוסף מספק מתודה להסרה מלאה של אובייקטים משובצים שנוספו להודעת דוא"ל. השתמש בגרסה העמוסת של LinkedResourceCollection.removeAt מתודה להסרת כל הוכחות של אובייקט משובץ מהודעת דוא"ל.
קוד הדוגמה למטה מראה כיצד להסיר אובייקטים משובצים מהודעת דוא"ל.
// Load the test message with Linked Resources
MailMessage msg = MailMessage.load("EmlWithLinkedResources.eml");
// Remove a LinkedResource
msg.getLinkedResources().removeAt(0, true);
// Now clear the Alternate View for linked Resources
msg.getAlternateViews().get_Item(0).getLinkedResources().clear(true);
חילוץ אובייקטים משובצים
הנושא הזה מסביר כיצד לחלץ אובייקטים משובצים מקובץ דוא"ל. אובייקט משובץ הוא אובייקט שנוצר בתוכנה אחת והוכנס dentro מסמך או קובץ שנוצר בתוכנה אחרת. לדוגמה, גליון Excel של מיקרוסופט יכול להיות משובץ בדוח Word של מיקרוסופט, או קובץ וידאו יכול להיות משובץ במצגת PowerPoint של מיקרוסופט. כאשר קובץ משובץ, במקום להוכנס או להודבק למסמך אחר, הוא שומר על הפורמט המקורי שלו. ניתן לפתוח את המסמך המשובץ בתוכנה המקורית ולשנות אותו. כדי לחלץ אובייקט משובץ מהודעת דוא"ל, פעל לפי הצעדים הבאים:
- צור מופע של MailMessage מחלקה.
- טען קובץ דוא"ל ב- MailMessage מופע.
- צור לולאה וצור מופע של ה- Attachment מחלקה בתוכה.
- שמור את הקובץ המצורף והצג אותו על המסך.
- ציין את כתובת השולח והנמען ב- MailMessage מופע.
- שלח דוא"ל באמצעות SmtpClient מחלקה.
קוד הקטע שלמטה מחלץ עצמים משובצים ממייל.
|עצמים משובצים שחולצו במייל| | :- | |
| קטע הקוד הבא מציג כיצד לחלץ עצמים משובצים.
MailMessage mailMsg = MailMessage.load("Message.msg", new MsgLoadOptions());
for (Attachment attachment : mailMsg.getAttachments()) {
attachment.save("MessageEmbedded_out.msg");
System.out.println(attachment.getName());
}
זיהוי וחילוץ קובץ מצורף משובץ מ‑MSG בפורמט RTF
הקוד הבא ניתן לשימוש עבור הודעות בפורמט RTF כדי לזהות ולחלץ קבצים מצורפים שהם Inline או מופיעים כאייקון בגוף ההודעה. קטע הקוד מציג כיצד לזהות ולחלץ קובץ מצורף משובץ מ‑MSG בפורמט RTF.
public static void extractInlineAttachments() {
MapiMessage message = MapiMessage.load("MSG file with RTF Formatting.msg");
for (MapiAttachment attachment : message.getAttachments()) {
if (isAttachmentInline(attachment)) {
try {
saveAttachment(attachment, UUID.randomUUID().toString());
} catch (Exception ex) {
System.err.println(ex);
}
}
}
}
static boolean isAttachmentInline(MapiAttachment attachment) {
for (MapiProperty property : attachment.getObjectData().getProperties().get_Values()) {
if ("\u0003ObjInfo".equals(property.getName())) {
byte[] data = property.getData();
int odtPersist1 = data[1] << 8 | data[0];
return (odtPersist1 & 0x40) == 0;
}
}
return false;
}
static void saveAttachment(MapiAttachment attachment, String fileName) throws IOException {
for (MapiProperty property : attachment.getObjectData().getProperties().get_Values()) {
if ("Package".equals(property.getName())) {
try (FileOutputStream fs = new FileOutputStream(fileName)) {
fs.write(property.getData(), 0, property.getData().length);
}
}
}
}
קבלת קבצים מצורפים מאימייל חתום
אימיילים חתומים מכילים קובץ מצורף יחיד smime.p7m. משמעות הדבר שהאימייל מוצפן באמצעות SMIME. פורמט הקובץ smime.p7m הוא החתימה הדיגיטלית. כדי לראות את תוכן האימייל השתמש ב‑ RemoveSignature מתודה. המתודה מחזירה MailMessage אובייקט ללא חתימה דיגיטלית.
MailMessage signedEml = MailMessage.load("signed.eml");
if (signedEml.isSigned()) {
for (int i = 0; i < signedEml.getAttachments().size(); i++) {
System.out.println("Signed email attachment" + i + ": " + signedEml.getAttachments().get_Item(i).getName());
}
// The email is signed. Remove a signature.
MailMessage eml = signedEml.removeSignature();
System.out.println("Signature removed.");
for (int i = 0; i < eml.getAttachments().size(); i++) {
System.out.println("Email attachment" + i + ": " + eml.getAttachments().get_Item(i).getName());
}
}
עבודה עם Content-Type ו‑Content-Disposition
Aspose.Email API מספקת את היכולת לעבוד עם הקובץ המצורף Content-Type ו Content-Disposition מתוך כותרת הקובץ המצורף. קטע הקוד הבא מציג כיצד לקבל ולשנות את תיאור התוכן מהקובץ המצורף.
הצגת פרמטרים של Content-Type ו‑Content-Disposition
קטע הקוד הבא מציג כיצד להציג את פרמטרי Content-Type ו‑Content-Disposition על המסך:
void run(MailMessage message) {
// Attachments
for (Attachment attachment : message.getAttachments()) {
ContentDisposition contentDisposition = attachment.getContentDisposition();
printContentDisposition(contentDisposition);
ContentType contentType = attachment.getContentType();
printContentType(contentType);
}
// Linked Resources
for (LinkedResource attachment : message.getLinkedResources()) {
ContentDisposition contentDisposition = attachment.getContentDisposition();
printContentDisposition(contentDisposition);
ContentType contentType = attachment.getContentType();
printContentType(contentType);
}
}
void printContentType(ContentType contentType) {
System.out.println("media-type: " + contentType.getMediaType());
System.out.println("charset: " + contentType.getCharSet());
System.out.println("name: " + contentType.getName());
}
void printContentDisposition(ContentDisposition contentDisposition) {
System.out.println("disposition-type: " + contentDisposition.getDispositionType());
System.out.println("is-inline: " + contentDisposition.getInline());
System.out.println("filename: " + contentDisposition.getFileName());
System.out.println("creation-date: " + contentDisposition.getCreationDate());
System.out.println("modification-date: " + contentDisposition.getModificationDate());
System.out.println("read-date: " + contentDisposition.getReadDate());
System.out.println("size: " + contentDisposition.getSize());
}
שימוש בפרמטרים Content-Type ו‑Content-Disposition עם קבצים מצורפים
קטע הקוד הבא מציג כיצד להשתמש בפרמטרים Content-Type ו‑Content-Disposition עם קובץ מצורף:
MailMessage eml = MailMessage.load(fileName);
Attachment attachment = new Attachment(pdfFileName, new ContentType("application/octet-stream"));
attachment.getContentDisposition().setDispositionType("attachment");
attachment.getContentDisposition().setFileName(fileName);
eml.addAttachment(attachment);