Carregando e Salvando Mensagens
Carregando e Salvando Mensagens de Email
Detectar um Formato de Arquivo
A API Aspose.Email fornece a capacidade de detectar o formato do arquivo de mensagem fornecido. O DetectFileFormat método do FileFormatUtil classe pode ser usada para isso. As classes e métodos a seguir podem ser usados para detectar o formato do arquivo carregado.
- FileFormatType Classe
- FileFormatInfo Classe
- FileFormatUtil Classe
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
O trecho de código a seguir mostra como detectar formatos de arquivo.
Carregar uma Mensagem de Email
Para carregar uma mensagem com opções de carga específicas, Aspose.Email fornece o LoadOptions classe que pode ser usada da seguinte forma:
Preservar o Formato de Mensagem Incorporada ao Carregar
Salvar e Converter Mensagens de Email
Aspose.Email facilita a conversão de qualquer tipo de mensagem para outro formato. Para demonstrar esse recurso, o código deste artigo carrega três tipos de mensagens do disco e as salva novamente em outros formatos. A classe base SaveOptions e as classes EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions para configurações adicionais ao salvar MailMessage pode ser usado para salvar mensagens em outros formatos. O artigo mostra como usar essas classes para salvar um e‑mail de exemplo como:
- Formato EML.
- Outlook MSG.
- Formato MHTML.
- Formato HTML.
Carregar e Salvar uma Mensagem de Email
O trecho de código a seguir mostra como carregar uma mensagem EML e salvá‑la no disco no mesmo formato.
Carregar e Salvar uma Mensagem de Email Preservando as Delimitações Originais
O trecho de código a seguir mostra como carregar um EML e salvá‑lo como EML preservando as delimitações originais.
Salvando como EML Preservando Anexos TNEF
O trecho de código a seguir mostra como salvar como EML preservando anexos TNEF.
Salvar EML como MSG
O trecho de código a seguir mostra como carregar uma mensagem EML e convertê‑la para MSG usando a opção apropriada de SaveOptions.
Salvar EML como MSG com Datas Preservadas
O MsgSaveOptions classe permite salvar a mensagem original como um arquivo Outlook Message (MSG) preservando datas. O trecho de código a seguir mostra como salvar como MSG com Datas Preservadas.
Salvar EML como MHTML
Opções diferentes de MHTML podem ser usadas para obter os resultados desejados. O trecho de código a seguir mostra como carregar uma mensagem EML em MailMessage e convertê‑lo para MHTML com a data da mensagem no sistema UTC.
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);
// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}
Formatar Cabeçalhos MHT Globalmente ao Salvar a partir de EML
Com Aspose.Email, você pode usar as opções de formatação global para o cabeçalho Mht. As opções globais definem a formatação comum de um cabeçalho Mht para todos MhtSaveOptions instâncias. Este recurso foi projetado para evitar a definição de formatação para cada instância de MhtSaveOptions.
Use os seguintes métodos da GlobalFormattingOptions classe e o exemplo de código abaixo para definir a formatação de um cabeçalho Mht:
- setPageHeaderFormat(String value) - PageHeaderFormat para instâncias de HeadersFormattingOptions se DefaultPageHeaderFormat não estiver definido.
- setHeaderFormat(String value) - HeaderFormat para instâncias de HeadersFormattingOptions se DefaultHeaderFormat não estiver definido.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat para instâncias de HeadersFormattingOptions se BeforeHeadersFormat não estiver definido.
- setAfterHeadersFormat(String value) - AfterHeadersFormat para instâncias de HeadersFormattingOptions se AfterHeadersFormat não estiver definido.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Converter EML para MHTML com Configurações Opcionais
O MhtSaveOptions classe fornece opções adicionais para salvar mensagens de e‑mail no formato MHTML. O enumerador MhtFormatOptions torna possível escrever informações adicionais de e‑mail no MHTML de saída. Os seguintes campos adicionais podem ser gravados:
- WriteHeader - grava o cabeçalho do e‑mail no arquivo de saída.
- WriteOutlineAttachments - grava anexos de contorno no arquivo de saída.
- WriteCompleteEmailAddress - grava o endereço de e‑mail completo no arquivo de saída.
- NoEncodeCharacters - nenhuma codificação de transferência de caracteres deve ser usada.
- HideExtraPrintHeader - oculta o cabeçalho de impressão extra do topo do arquivo de saída.
- WriteCompleteToEmailAddress - grava o endereço de e‑mail completo do destinatário no arquivo de saída.
- WriteCompleteFromEmailAddress - grava o endereço de e‑mail completo do remetente no arquivo de saída.
- WriteCompleteCcEmailAddress - grava os endereços de e‑mail completos de quaisquer destinatários em cópia carbono no arquivo de saída.
- WriteCompleteBccEmailAddress - grava o endereço de e‑mail completo de quaisquer destinatários em cópia oculta no arquivo de saída.
- RenderCalendarEvent - grava texto do evento de calendário no arquivo de saída.
- SkipByteOrderMarkInBody - grava bytes da Marca de Ordem de Byte (BOM) no arquivo de saída.
- RenderVCardInfo - grava texto da Visualização Alternativa VCard no arquivo de saída.
- DisplayAsOutlook - exibe o cabeçalho De.
- RenderTaskFields - grava campos específicos de Tarefa no arquivo de saída.
- Nenhum - Nenhuma configuração especificada.
O trecho de código a seguir mostra como converter arquivos EML para MHTML com configurações opcionais.
Renderizar Eventos de Calendário ao Converter para MHTML
O MhtFormatOptions.RenderCalendarEvent renderiza os eventos do Calendário para o MHTML de saída. O trecho de código a seguir mostra como renderizar eventos de calendário ao converter para MHTML.
Exportar Email para MHT sem Imagens Inline
Exportar e‑mail para MHT com fuso horário personalizado
MailMessage classe fornece o setTimeZoneOffset propriedade para definir fuso horário personalizado ao exportar para MHT. O trecho de código a seguir mostra como exportar e‑mail para MHT com fuso horário personalizado.
MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());
// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);
MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);
Exportando e‑mail para EML
O trecho de código a seguir mostra como exportar e‑mails para EML.
Salvar e‑mail como HTML
O HtmlSaveOptions classe que permite exportar o corpo da mensagem para HTML. O trecho de código a seguir mostra como salvar uma mensagem como HTML.
Salvar mensagem de e‑mail como HTML com caminho relativo para recursos
Ao exportar mensagens de e‑mail para o formato HTML, é possível escolher salvar os recursos do e‑mail com caminhos relativos. Esse recurso oferece mais flexibilidade na forma como os recursos são vinculados no arquivo HTML de saída, facilitando o compartilhamento e a exibição de e‑mails salvos em diferentes sistemas. O HtmlSaveOptions.UseRelativePathToResources propriedade que permite salvar recursos com caminhos relativos. O valor padrão da propriedade é false (recursos são salvos com caminhos absolutos). Quando definido como true, os recursos são salvos com caminhos relativos. Arquivos HTML com caminhos relativos são mais portáteis e podem ser visualizados corretamente independentemente da estrutura de arquivos do ambiente de hospedagem. Você pode escolher entre caminhos absolutos e relativos conforme os requisitos. Você pode definir caminhos personalizados para recursos usando o ResourceHtmlRenderingHandler evento.
Salvar com caminho relativo padrão para recursos
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
Neste caso, os recursos serão salvos na pasta [nome do arquivo html].files, no mesmo caminho do arquivo .html, e o HTML referenciará os recursos via caminhos relativos.
Salvar com caminho absoluto para recursos
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Como no primeiro caso, os recursos serão salvos na pasta [nome do arquivo html].files por padrão, mas o HTML referenciará os recursos usando caminhos absolutos.
Caminho relativo personalizado usando o evento ResourceHtmlRenderingHandler
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
if (sender instanceof AttachmentBase) {
AttachmentBase attachment = (AttachmentBase) sender;
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
}
}
});
msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);
Usando o ResourceHtmlRenderingHandler evento, você pode definir caminhos relativos ou absolutos personalizados para os recursos. Ao personalizar caminhos com o ResourceHtmlRenderingHandler manipulador de evento, e como UseRelativePathToResources está definido como true, você deve atribuir um caminho relativo ao PathToResourceFile propriedade para garantir referências corretas.
Preservar ícones personalizados em uma mensagem ao converter para HTML
Às vezes, a mensagem contém anexos embutidos, que são exibidos como imagens de ícone no corpo da mensagem. Essas mensagens podem gerar problemas ao convertê‑las para HTML, pois as imagens dos ícones são perdidas. Isso acontece porque os ícones dos anexos não são armazenados diretamente na mensagem.
O usuário do Aspose.Email pode personalizar os ícones dos anexos ao converter a mensagem para HTML. Para isso, o HtmlSaveOptions.ResourceHtmlRendering evento usado para personalizar a renderização de arquivos de recursos (como anexos) ao salvar uma mensagem de e‑mail como arquivo HTML. No exemplo de código abaixo, o manipulador de evento é usado para definir dinamicamente o caminho dos arquivos de recursos (ícones) com base no tipo de conteúdo do anexo. Isso permite a renderização personalizada de recursos na saída HTML de acordo com seu tipo de arquivo.
HtmlSaveOptions options = new HtmlSaveOptions();
options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {
AttachmentBase attachment = (AttachmentBase) sender;
e.setCaption(attachment.getContentType().getName());
if (attachment.getContentType().getName().endsWith(".pdf")) {
e.setPathToResourceFile("pdf_icon.png");
} else if (attachment.getContentType().getName().endsWith(".docx")) {
e.setPathToResourceFile("word_icon.jpg");
} else if (attachment.getContentType().getName().endsWith(".jpg")) {
e.setPathToResourceFile("jpeg_icon.png");
} else {
e.setPathToResourceFile("not_found_icon.png");
}
}
});
options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);
String fileName = "message.msg";
MailMessage mailMessage = MailMessage.load(fileName);
mailMessage.save("fileName.html", options);
Definir hora e fuso horário ao salvar EML como HTML
Usuários do Aspose.Email podem definir os formatos de exibição de hora e fuso horário em HtmlSaveOptions. O HeadersFormattingOptions classe que permite especificar opções de formatação de cabeçalhos ao salvar MailMessage em formato Mhtml ou Html. Os seguintes métodos da HtmlFormatOptions classe que especifica os campos a serem exibidos no arquivo de saída:
- RenderCalendarEvent - Indica que o texto do evento de calendário deve ser escrito no mhtml de saída.
- RenderVCardInfo - Indica que o texto da visualização alternativa VCard deve ser escrito no HTML de saída.
O exemplo de código a seguir mostra como definir a hora e o fuso horário ao salvar EML como HTML:
MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");
Salvando como HTML sem incorporar recursos
Salvando uma mensagem como modelo do Outlook (.oft)
O trecho de código a seguir mostra como salvar uma mensagem como um modelo do Outlook (.oft).