Salvar Mensagens da Caixa de Correio do Exchange Server usando WebDav
Este artigo mostra como obter mensagens de uma caixa de correio do Exchange Server e salvá-las no disco nos formatos EML e MSG.
Salvar Mensagens de uma Caixa de Correio do Exchange Server em EML
Para obter mensagens e salvar no formato EML:
- Crie uma instância da classe ExchangeClient.
- Forneça o nome do servidor, nome de usuário, senha e domínio.
- Chame o método ExchangeClient.listMessages() para obter uma instância da coleção ExchangeMessagesInfoCollection.
- Percorra a coleção ExchangeMessagesInfoCollection para obter o URI exclusivo de cada mensagem.
- Chame o método ExchangeClient.saveMessage() e passe o URI exclusivo como um parâmetro.
- Forneça um método saveMessage() com um caminho para onde você deseja salvar o arquivo.
// 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"); | |
} |
Salvar Mensagens em um OutputStream
Em vez de salvar arquivos EML no disco, é possível salvá-los em um OutputStream. Isso é útil quando você deseja salvar o fluxo em algum local de armazenamento, como um banco de dados. Uma vez que o fluxo foi salvo em um banco de dados, você pode recarregar o arquivo EML na classe MailMessage.
Os trechos de código abaixo salvam mensagens de uma caixa de correio do Exchange Server em um fluxo de memória.
// 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(); | |
} | |
} |
Salvar Mensagens no Formato MSG
O método ExchangeClient.saveMessage() pode salvar diretamente a mensagem no formato EML. Para salvar as mensagens no formato MSG, primeiro, chame o método ExchangeClient.fetchMessage() que retorna uma instância da classe MailMessage. Em seguida, chame o método MailMessage.save() para salvar a mensagem em MSG.
O trecho de código abaixo obtém mensagens de uma caixa de correio do Exchange Server e as salva no formato 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()); | |
} |