package com.aspose.email.examples.email; import com.aspose.email.*; import com.aspose.email.examples.Utils; import java.io.*; /* This project uses automatic dependency resolution feature of Maven to resolve Aspose.Email for Java API reference when the project is build. Please check https://maven.apache.org/what-is-maven.html for more information. If you do not wish to use Maven, you can manually download Aspose.Email for Java API from http://www.aspose.com/downloads, install it and then add its reference to this project. For any issues, questions or suggestions please feel free to contact us using http://www.aspose.com/community/forums/default.aspx */ public class UpdateTNEFAttachments { public static void main(String[] args) { // The path to the resource directory. String dataDir = Utils.getSharedDataDir(UpdateTNEFAttachments.class) + "email/"; TestUpdateResources(dataDir); } // ExStart:UpdateTNEFAttachments public static void TestUpdateResources(String dataDir) { String fileName = dataDir + "tnefEMl1.eml"; String imgFileName = dataDir + "Untitled.jpg"; String outFileName = dataDir + "01_SAVE_Preserve_out.eml"; MailMessage originalMailMessage = MailMessage.load(fileName); EmlLoadOptions emlOp = new EmlLoadOptions(); UpdateResources(originalMailMessage, imgFileName); EmlSaveOptions emlSo = new EmlSaveOptions(MailMessageSaveType.getEmlFormat()); emlSo.setFileCompatibilityMode(FileCompatibilityMode.PreserveTnefAttachments); originalMailMessage.save(outFileName, emlSo); } private static void UpdateResources(MailMessage msg, String imgFileName) { for (int i = 0; i < msg.getAttachments().size(); i++) { if (msg.getAttachments().get_Item(i).getContentType().getName().endsWith("jpg")) { try { File attFile = new File(imgFileName); msg.getAttachments().get_Item(i).setContentStream(new FileInputStream(attFile)); } catch (FileNotFoundException e) { e.printStackTrace(); } } else if (msg.getAttachments().get_Item(i).getContentType().getName().endsWith("eml")) { ByteArrayOutputStream ms = new ByteArrayOutputStream(); msg.getAttachments().get_Item(i).save(ms); //ms.reset(); ByteArrayInputStream ims = new ByteArrayInputStream(ms.toByteArray()); MailMessage embeddedMessage = MailMessage.load(ims); UpdateResources(embeddedMessage, imgFileName); ByteArrayOutputStream outProcessedEmbedded = new ByteArrayOutputStream(); embeddedMessage.save(outProcessedEmbedded, SaveOptions.getDefaultMsgUnicode()); //outProcessedEmbedded.reset(); ByteArrayInputStream inProcessedEmbedded = new ByteArrayInputStream(outProcessedEmbedded.toByteArray()); msg.getAttachments().get_Item(i).setContentStream(inProcessedEmbedded); } } for (LinkedResource att : msg.getLinkedResources()) { if (att.getContentType().getMediaType() == "image/jpg") { try { File embeddedFile = new File(imgFileName); FileInputStream es = null; es = new FileInputStream(embeddedFile); att.setContentStream(es ); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } // ExEnd:UpdateTNEFAttachments }