Читання вбудованих вкладень електронних листів у повідомленні в Aspose.Email

Aspose.Email - Читати вбудовані вкладення електронної пошти з повідомлення

Іноді ми отримуємо електронні листи, у яких інші листи вбудовані як вкладення. Ці вбудовані листи є повними повідомленнями зі своїм списком одержувачів, темою, тілом і навіть вкладеннями. Кожне з цих повідомлень може також містити вбудовані повідомлення. За допомогою Aspose.Email Java розробники можуть отримати доступ до кожного вбудованого повідомлення як окремого повідомлення. Цей приклад показує використання рекурсивної функціональності.

Java

 MailMessage message = MailMessage.load(dataDir + \"embedded.msg\", MessageFormat.getMsg());

for (int i = 0; i < message.getAttachments().size(); i++)

{

    Attachment att = (Attachment) message.getAttachments().get_Item(i);

    System.out.println("Attachment Name: " + att.getName());

    // Get the name of attachment. If msg subject contains characters like :, /, \ etc., replace with space

    // because windows cannot save files with these characters

    // also save first 50 characters as file name to avoid long file names

    String attFileName = att.getName().replace(".eml", "").replace(":", " ").replace("\\", " ").replace("/", " ").replace("?", "");

    if (attFileName.length() > 50)

    {

        attFileName = attFileName.substring(0, 50);

    }

    String attExt = (att.getName().substring(att.getName().lastIndexOf("."), att.getName().lastIndexOf(".") + 4));

    // Save the attachment to disk

    att.save(dataPath + attFileName + attExt);

    // Check if it is an orphaned text attachment file (ATT00001.txt....) and of type eml

    if ((attExt.equals(".eml")) || (att.getContentType().getMediaType().equals("text/plain") && att.getName().contains(".txt") == true && att.getName().contains("ATT") == true))

    {

        // Try to load this text file in MailMessage

        MailMessage attMsg = MailMessage.load(dataPath + attFileName + attExt, MessageFormat.getEml());

        // Call the function recursively to parse this message and attachments

        ParseMessage(attMsg);

    }

}

Завантажити працюючий код

Завантажити зразковий код