Perguntas Frequentes
Licenciamento e código aberto
Qual é o modelo de licenciamento para Aspose.Email FOSS para .NET?
Aspose.Email FOSS for .NET is released under the MIT License. You can use it in personal, commercial, and open-source projects without restriction. No runtime licence key or activation is required.
Posso usar Aspose.Email FOSS para .NET num produto comercial?
Sim, a licença MIT permite uso comercial ilimitado. Não é necessário pagamento de royalties, servidor de licenças ou conexão com internet no tempo de execução.
Instalação e requisitos
Como posso instalar Aspose.Email FOSS para .NET?
Instale o pacote usando o comando .NET CLI abaixo:
dotnet add package Aspose.Email.FOSSAdicionar a declaração de espaço de nomes para cada ficheiro fonte que utiliza a API:
using Aspose.Email.Foss.Msg;Qual é a versão .NET necessária?
.NET 8.0 ou posterior. A biblioteca não suporta o .Net Framework ou o Standard .net. É puro C# gerenciado sem dependências nativas e funciona de forma idêntica em Windows, Linux, macOS, Docker e ambientes sem servidor.
Suporte de formato
Quais formatos de e-mail são suportados?
| Formatos de imagem | Leia. | Escrever . |
|---|---|---|
| (Proposta de lei) | - Sim , sim . | - Sim , sim . |
| CFB (Compound File Binary) | - Sim , sim . | - Sim , sim . |
| EML (MIME / RFC 5322) | - Sim , sim . | - Sim , sim . |
Posso ler os ficheiros?
Sim, usa. MapiMessage.LoadFromEml(stream) para carregar um padrão .eml O arquivo integrado. MIME o parser lida com cabeçalhos dobrados, conteúdo base64 e mensagens multipart.
Posso converter MSG para EML?
Sim, liga. message.SaveToEml() para a memória byte[] produção, ou message.SaveToEml(stream) Subjeto, corpo, HTML corpo do remetente., Os destinatários e os anexos são preservados.
O TNEF (winmail.dat) é suportado?
Não. Só são suportados os formatos padrão MSG (CFB) e EML MIME .
É suportado IMAP, SMTP ou POP3?
Não. A biblioteca lida diretamente com os arquivos MSG e EML e não inclui nenhuma rede ou camada de protocolo.
Utilização da API
Como carrego um arquivo MSG?
Abrir um fluxo de arquivo e passar para o MapiMessage.FromStream() para carregar a mensagem na memória:
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("message.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);Como posso criar e salvar uma nova mensagem?
Chama-me . MapiMessage.Create() com sujeito e corpo cadeias, adicionar destinatários, em seguida, chamar Save() com um caminho de ficheiro:
var message = MapiMessage.Create("Subject", "Body");
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
message.Save("output.msg");Como adiciono anexos a uma mensagem?
Chama-me . AddAttachment() com o nome do ficheiro, a fonte de dados (arquivo ou fluxo de bytes) e a cadeia MIME:
// From a byte array
message.AddAttachment("file.pdf", pdfBytes, "application/pdf");
// From a stream
using var stream = File.OpenRead("photo.png");
message.AddAttachment("photo.png", stream, "image/png");Como converterei um arquivo EML para MSG?
Abra o arquivo EML como um fluxo e passe-o para MapiMessage.LoadFromEml(),Então , liga-me . Save() para escrever o resultado como MSG:
using var eml = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(eml);
message.Save("message.msg");Como é que eu acedo à estrutura CFB?
Utilização: CfbReader.FromFile() para abrir o contêiner CFB e iterar as suas entradas de diretório com IterChildren():
using Aspose.Email.Foss.Cfb;
using var reader = CfbReader.FromFile("message.msg");
foreach (var entry in reader.IterChildren(CfbConstants.RootStreamId))
Console.WriteLine(entry.Name);Limitações conhecidas
Há APIs de calendário ou compromissos?
A biblioteca lida com arquivos MSG de forma genérica. As propriedades específicas do calendário podem ser acessadas via SetProperty() / GetPropertyValue() com os IDs de propriedade MAPI de: CommonMessagePropertyId, mas não há calendário dedicado ou API de compromissos.
A segurança dos fios está garantida?
Cada um. MapiMessage e a) CfbReader O acesso simultâneo a uma instância separada é independente. Não compartilhe uma única instância entre as linhas de discussão. sem sincronização externa.