Сохранение сообщений из почтового ящика Exchange Server с использованием WebDav
В этой статье показано, как получить сообщения из почтового ящика Exchange Server и сохранить их на диск в форматах EML и MSG.
Сохранение сообщений из почтового ящика Exchange Server в формат EML
Чтобы получить сообщения и сохранить в формате EML:
- Создайте экземпляр класса ExchangeClient.
- Укажите имя сервера, имя пользователя, пароль и домен.
- Вызовите метод ExchangeClient.listMessages(), чтобы получить экземпляр коллекции ExchangeMessagesInfoCollection.
- Пройдите по коллекции ExchangeMessagesInfoCollection, чтобы получить уникальный URI для каждого сообщения.
- Вызовите метод ExchangeClient.saveMessage() и передайте уникальный URI в качестве параметра.
- Укажите метод saveMessage() с путем, где вы хотите сохранить файл.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Create instance of ExchangeClient class by giving credentials | |
ExchangeClient client = new ExchangeClient("http://servername/exchange/username", "username", "password", "domain"); | |
// Call ListMessages method to list messages info from Inbox | |
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri()); | |
for (ExchangeMessageInfo msgInfo : msgCollection) { | |
String strMessageURI = msgInfo.getUniqueUri(); | |
// Now save the message in disk | |
client.saveMessage(strMessageURI, dataDir + msgInfo.getMessageId() + ".eml"); | |
} |
Сохранение сообщений в OutputStream
Вместо сохранения EML файлов на диск можно сохранить их в OutputStream. Это полезно, когда вы хотите сохранить поток в какое-либо место хранения, например, в базу данных. Как только поток будет сохранен в базу данных, вы можете загрузить файл EML в класс MailMessage.
Приведенные ниже фрагменты кода сохраняют сообщения из почтового ящика Exchange Server в память.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Create instance of ExchangeClient class by giving credentials | |
ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain"); | |
// Call ListMessages method to list messages info from Inbox | |
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri()); | |
// Loop through the collection to get Message URI | |
for (ExchangeMessageInfo msgInfo : msgCollection) { | |
String strMessageURI = msgInfo.getUniqueUri(); | |
try { | |
OutputStream outputStream = new FileOutputStream(dataDir + msgInfo.getMessageId() + "_Out.eml"); | |
client.saveMessage(strMessageURI, outputStream); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} |
Сохранение сообщений в формате MSG
Метод ExchangeClient.saveMessage() может напрямую сохранять сообщение в формате EML. Чтобы сохранить сообщения в формате MSG, сначала вызовите метод ExchangeClient.fetchMessage(), который возвращает экземпляр класса MailMessage. Затем вызовите метод MailMessage.save(), чтобы сохранить сообщение в формате MSG.
Приведенный ниже фрагмент кода получает сообщения из почтового ящика Exchange Server и сохраняет их в формате MSG.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Create instance of ExchangeClient class by giving credentials | |
ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain"); | |
// Call ListMessages method to list messages info from Inbox | |
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri()); | |
for (ExchangeMessageInfo msgInfo : msgCollection) { | |
String strMessageURI = msgInfo.getUniqueUri(); | |
// Now get the message details using FetchMessage() | |
MailMessage msg = client.fetchMessage(strMessageURI); | |
// Save message as MSG | |
msg.save(dataDir + msgInfo.getMessageId() + ".msg", SaveOptions.getDefaultMsg()); | |
} |