Gestione dei messaggi Outlook
Salva email come HTML
Aspose.Email rende possibile salvare le risorse email con percorsi relativi quando si esportano i messaggi in formato HTML. Questa funzionalità offre maggiore flessibilità nel modo in cui le risorse sono collegate nel file HTML di output, facilitando la condivisione e la visualizzazione delle email salvate su sistemi diversi. Per salvare le risorse con percorsi relativi, usa HtmlSaveOptions.UseRelativePathToResources proprietà. Il valore predefinito della proprietà è false (le risorse sono salvate con percorsi assoluti). Quando impostato a true, le risorse sono salvate con percorsi relativi.
I file HTML con percorsi relativi sono più portabili e possono essere visualizzati correttamente indipendentemente dalla struttura di file dell’ambiente di hosting. Puoi scegliere tra percorsi assoluti e relativi a seconda delle esigenze. Puoi definire percorsi personalizzati per le risorse usando il ResourceHtmlRendering evento.
Il seguente esempio di codice dimostra come salvare un’email con il percorso relativo predefinito alle risorse:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
In questo caso, le risorse saranno salvate nella cartella [nome file html]_files, nello stesso percorso del file .html e l’HTML farà riferimento alle risorse tramite percorsi relativi.
Il codice di esempio sottostante dimostra come salvare con percorso assoluto alle risorse:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = false
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Come nel primo caso, le risorse verranno salvate nella cartella [nome file html]_files per impostazione predefinita, ma l’HTML farà riferimento alle risorse usando percorsi assoluti.
Utilizzando il ResourceHtmlRendering evento, puoi impostare percorsi relativi o assoluti personalizzati per le risorse. Quando personalizzi i percorsi con il ResourceHtmlRendering gestore dell’evento, e poiché UseRelativePathToResources è impostata su true, dovresti assegnare un percorso relativo al PathToResourceFile proprietà per garantire un riferimento corretto.
Il seguente esempio di codice dimostra come personalizzare il percorso relativo usando l’evento ResourceHtmlRendering
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
if (o is AttachmentBase attachment)
{
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
}
};
msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);
Converti MSG in messaggi MIME
L’API Aspose.Email consente di convertire i file MSG in messaggi MIME utilizzando il ToMailMessage metodo.
Imposta timeout per la conversione e il caricamento dei messaggi
Le seguenti funzionalità ti consentiranno di impostare il timeout in millisecondi per il processo di conversione e caricamento:
-
MailConversionOptions.Timeout property- Limita il tempo in millisecondi durante la conversione di un messaggio.
-
MailConversionOptions.TimeoutReached - Generato se il tempo scade durante la conversione a MailMessage.
-
MsgLoadOptions.Timeout - Limita il tempo in millisecondi durante la conversione di un messaggio.
-
MsgLoadOptions.TimeoutReached - Generato se il tempo scade durante la conversione a MailMessage.
Il campione di codice sottostante ti mostrerà come impostare il timeout durante la conversione di un messaggio:
var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;
options.TimeoutReached += (object sender, EventArgs args) =>
{
string subj = (sender as MailMessage).Subject;
// Set a flag indicating the timeout was reached
isTimedOut = true;
};
var mailMessage = mapiMessage.ToMailMessage(options);
Conversione da MSG a EML conservando il corpo RTF
La conversione di un file MSG in EML preservando il corpo RTF può essere effettuata in due modi:
-
usando MsgLoadOptions.PreserveRtfContent proprietà del MsgLoadOptions class;
-
usando MailConversionOptions.PreserveRtfContent proprietà del MailConversionOptions class;
Entrambe le proprietà ottengono o impostano un valore che indica se mantenere il corpo rtf in MailMessage.
I seguenti frammenti di codice mostrano come convertire un file MSG in EML e preservare il corpo RTF:
var loadOptions = new MsgLoadOptions
{
PreserveRtfContent = true
};
var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
PreserveRtfContent = true
};
var msg = MapiMessage.Load("my.msg");
var eml = msg.ToMailMessage(conversionOptions);
Gestione dei file modello Outlook (.OFT)
I modelli di Outlook sono molto utili quando vuoi inviare un messaggio email simile più e più volte. Invece di preparare il messaggio da zero ogni volta, prima prepara il messaggio in Outlook e salvalo come Modello Outlook (OFT). Dopo di che, ogni volta che devi inviare il messaggio, puoi crearne uno dal modello, risparmiando tempo nella scrittura dello stesso testo nel corpo o nell’oggetto, impostando la formattazione, ecc. Aspose.Email’s MailMessage la classe può essere utilizzata per caricare e leggere un file modello Outlook (OFT). Una volta che il modello Outlook è caricato in un’istanza del MailMessage classe, è possibile aggiornare mittente, destinatario, corpo, oggetto e altre proprietà. Dopo aver aggiornato le proprietà:
- Invia l’email utilizzando il SmtpClient classe o
- Salva il messaggio come MSG ed esegui ulteriori aggiornamenti/validazioni utilizzando Microsoft Outlook.
Nei campioni di codice seguenti, noi:
- Carica il modello utilizzando il MailMessage classe.
- Aggiorna alcune delle proprietà.
- Salva il messaggio in formato MSG.
Il seguente frammento di codice mostra come caricare il file OFT, aggiornare il messaggio e salvarlo in formato MSG.
Salva file MSG come modelli
Il seguente frammento di codice mostra come salvare il file Outlook MSG come modello.
Determina il tipo di messaggio MAPI (OFT o MSG)
Durante il caricamento di un oggetto MapiMessage da un file, potrebbe essere necessario determinare se il messaggio caricato è un file modello o un file email regolare. Utilizzando il IsTemplate proprietà del MapiMessage classe, è possibile rilevare con precisione se un’email è un modello o meno. Questa funzionalità può essere preziosa nella gestione e nell’elaborazione di vari tipi di file email all’interno di applicazioni e sistemi.
L’esempio di codice seguente dimostra come determinare se un MapiMessage è OFT o MSG:
var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false
var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true
Salva MapiMessage o MailMessage in formato OFT
Il SaveOptions la classe consente di specificare opzioni aggiuntive quando si salva un MailMessage o MapiMessage in un formato specifico.
Il seguente esempio di codice dimostra come salvare un messaggio in formato OFT:
// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
eml.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
}
// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
msg.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
}
Gestione dei messaggi firmati digitalmente
Aspose.Email implementa l’algoritmo completo dell’oggetto email S/MIME. Questo conferisce all’API la piena capacità di preservare le firme digitali durante la conversione dei messaggi tra formati.
Preserva firma durante la conversione da EML a MSG
Aspose.Email preserva la firma digitale durante la conversione da EML a MSG. Il seguente frammento di codice mostra come convertire da EML a MSG.
Converti messaggi S/MIME da MSG a EML
Aspose.Email preserva la firma digitale durante la conversione da MSG a EML come mostrato nel seguente frammento di codice.
Verifica firme di email sicure
Le seguenti funzionalità sono disponibili per verificare la firma degli oggetti MapiMessage.
- SecureEmailManager classe per la verifica della firma delle email sicure.
- SmimeResult classe per memorizzare i risultati del controllo.
- SecureEmailManager.CheckSignature(MapiMessage msg) metodo.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) metodo.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) metodo.
Il campione di codice seguente mostra come implementare le funzionalità nel tuo progetto:
var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);
var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
var result = new SecureEmailManager().CheckSignature(eml, cert, store);
Rimuovi firme da MapiMessages
Per una migliore compatibilità, il MapiMessage.RemoveSignature metodo e MapiMessage.IsSigned le proprietà sono usate per rimuovere una firma digitale da un messaggio.
Il seguente frammento di codice mostra come implementare queste funzionalità nel tuo progetto:
var msg = MapiMessage.Load(fileName);
if (msg.IsSigned)
{
var unsignedMsg = msg.RemoveSignature();
}
Decripta MapiMessages con certificati
Se possiedi messaggi MAPI cifrati e devi decifrarli utilizzando la chiave privata memorizzata in un certificato, le seguenti funzionalità di Aspose.Email possono essere utili:
- MapiMessage.IsEncrypted - Restituisce un valore che indica se il messaggio è criptato.
- MapiMessage.Decrypt() - Decritta questo messaggio (il metodo cerca nei negozi My dell’utente e del computer corrente il certificato e la chiave privata appropriati).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Decripta questo messaggio con certificato.
Il seguente frammento di codice mostra come lavorare con messaggi MAPI cifrati:
var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");
if (msg.IsEncrypted);
{
var decryptedMsg = msg.Decrypt(privateCert);
}
Imposta categorie colore per i file MSG
Una categoria di colore contrassegna un messaggio email per una certa importanza o categoria. Microsoft Outlook consente agli utenti di assegnare categorie di colore per differenziare le email. Per gestire la categoria di colore, utilizzare il FollowUpManager. Contiene funzioni come AddCategory, RemoveCategory, ClearCategories e GetCategories.
- AddCategory accetta MapiMessage e la stringa della categoria di colore, ad esempio "Categoria Viola" o "Categoria Rossa" come argomenti.
- RemoveCategory accetta MapiMessage e la stringa della categoria di colore da rimuovere dal messaggio.
- ClearCategories viene utilizzato per rimuovere tutte le categorie di colore dal messaggio.
- GetCategories viene utilizzato per recuperare tutte le categorie di colore da un determinato messaggio.
Il seguente esempio esegue le attività indicate di seguito:
- Aggiungi una categoria di colore.
- Aggiungi un’altra categoria di colore.
- Recupera l’elenco di tutte le categorie.
- Rimuovi tutte le categorie.
Accedi alle informazioni di follow-up nei file MSG
L’API Aspose.Email consente di accedere alle informazioni di follow‑up da un messaggio inviato o ricevuto. È in grado di recuperare le informazioni di Lettura, Ricevuta di lettura di consegna e i risultati dei voti da un file di messaggio.
Recupera informazioni di lettura e di ricevuta di consegna
Il seguente frammento di codice mostra come recuperare le informazioni di ricevuta di lettura e di consegna.
Crea messaggi di inoltro e risposta
L’API Aspose.Email fornisce la capacità di creare e formattare i messaggi di inoltro e risposta. Il ReplyMessageBuilder e ForwardMessageBuilder le classi dell’API sono usate per creare rispettivamente i messaggi Reply e Forward. Un messaggio Reply o Forward può essere specificato per essere creato usando uno qualsiasi dei modes di OriginalMessageAdditionMode enum. Questo enum ha i seguenti valori:
- OriginalMessageAdditionMode.None - Il messaggio originale non è incluso nel messaggio di risposta.
- OriginalMessageAdditionMode.Attachment - Il messaggio originale è incluso come allegato nel messaggio di risposta
- OriginalMessageAdditionMode.Textpart - Il messaggio originale è incluso come testo nel corpo del messaggio di risposta
Crea messaggi di risposta
Il seguente frammento di codice mostra come creare un messaggio di risposta.
Crea messaggi di inoltro
Il seguente snippet di codice mostra come creare un messaggio di inoltro.