Zarządzanie załącznikami wiadomości
Obsługa załączników w Outlooku
Tworzenie i zapisywanie wiadomości Outlook (plików MSG) wyjaśnia, jak tworzyć i zapisywać wiadomości oraz jak tworzyć pliki MSG z załącznikami. Ten artykuł wyjaśnia, jak zarządzać załącznikami Microsoft Outlook przy użyciu Aspose.Email. Załączniki z pliku wiadomości są dostępne i zapisywane na dysku przy użyciu MapiMessage klasa Załączniki właściwości. Załączniki właściwość jest kolekcją typu MapiAttachmentCollection klasa.
Sprawdź typ załącznika (Inline lub Regular)
Załączniki inline i zwykłe pełnią różne funkcje. Załączniki inline są wizualnie wbudowane w wiadomość e‑mail i zazwyczaj są obrazami lub plikami multimedialnymi. Natomiast zwykłe załączniki są odrębnymi plikami dołączonymi do e‑maila i mogą zawierać różne typy plików. MapiAttachment.IsInline właściwość MapiAttachment klasa pobiera wartość wskazującą, czy załącznik jest wbudowany, czy regularny.
Poniższy przykład kodu wyodrębnia i wyświetla informacje o każdym załączniku w załadowanym MapiMessage, w tym ich wyświetlane nazwy oraz informację, czy są załącznikami inline, czy nie.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Sprawdź typ załącznika (IsReference)
Ten MapiAttachment klasa zawiera IsReference właściwość, która pozwala programistom identyfikować załączniki referencyjne w wiadomości. W poniższym przykładzie kodu możesz sprawdzić, czy załącznik jest załącznikiem referencyjnym:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Zapisz załączniki z plików MSG
Aby zapisać załączniki z pliku MSG:
- Iteruj przez MapiAttachmentCollection kolekcję i pobierz poszczególne załączniki.
- Aby zapisać załączniki, wywołaj metodę Save() klasy MapiAttachment.
Poniższy fragment kodu pokazuje, jak zapisać załączniki na lokalnym dysku.
Wyodrębnij załączniki z plików MSG sformatowanych jako RTF
Dla wiadomości sformatowanych jako RTF, poniższy kod może być użyty do rozróżnienia i wyodrębnienia załączników, które są inline lub pojawiają się jako ikona w treści wiadomości. Poniższy fragment kodu pokazuje, jak zidentyfikować i wyodrębnić wbudowany załącznik z MSG sformatowanego jako RTF.
var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");
foreach (var attachment in eml.Attachments)
{
if (IsAttachmentInline(attachment))
{
try
{
SaveAttachment(attachment, Data.Out/new Guid().ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
static bool IsAttachmentInline(MapiAttachment attachment)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "\x0003ObjInfo")
{
var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
return (odtPersist1 & (1 << (7 - 1))) == 0;
}
}
return false;
}
static void SaveAttachment(MapiAttachment attachment, string fileName)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "Package")
{
using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
fs.Write(property.Data, 0, property.Data.Length);
}
}
}
Uzyskaj zagnieżdżone załączniki wiadomości e‑mail
Załączniki OLE osadzone również pojawiają się w MapiMessage klasa kolekcji Attachment. Poniższy przykład kodu analizuje plik wiadomości pod kątem wbudowanych załączników wiadomości i zapisuje go na dysku. MapiMessage statyczna metoda klasy FromProperties() może utworzyć nową wiadomość z wbudowanego załącznika. Poniższy fragment kodu pokazuje, jak uzyskać zagnieżdżone załączniki wiadomości e‑mail.
Usuń załączniki
Biblioteka Aspose Outlook zapewnia funkcjonalność usuwania załączników z plików Microsoft Outlook Message (.msg):
- Wywołaj metodę RemoveAttachments(). Przyjmuje ona ścieżkę do pliku wiadomości jako parametr. Jest zaimplementowana jako metoda publiczna statyczna, więc nie musisz tworzyć obiektu.
Poniższy fragment kodu pokazuje, jak usuwać załączniki.
Możesz także wywołać MapiMessage statyczna metoda klasy DestroyAttachment(). Działa szybciej niż RemoveAttachment(), ponieważ metoda RemoveAttachment() analizuje plik wiadomości.
Dodaj załączniki MSG
Wiadomość Outlook może zawierać inne wiadomości Microsoft Outlook jako załączniki, zarówno jako zwykłe, jak i osadzone wiadomości. MapiAttachmentCollection udostępnia przeciążone wersje metody Add, aby tworzyć wiadomości Outlook z oboma typami załączników.
Wypróbuj!
Dodawaj lub usuwaj załączniki e‑mail za pomocą darmowego Aspose.Email Editor App.
Dodaj załączniki referencyjne do MapiMessages
Ten ReferenceAttachmentOptions klasa upraszcza dodawanie załączników referencyjnych, kapsułkując wszystkie niezbędne właściwości w jednym obiekcie.
Parametry ReferenceAttachmentOptions:
- sharedLink: Pełny udostępniony link do załącznika dostarczony przez usługę internetową hostującą plik.
- url: Lokalizacja pliku lub URL zasobu.
- providerName: Nazwa dostawcy załącznika referencyjnego (np. Google Drive, Dropbox).
- Przykład: Dodawanie załącznika referencyjnego przy użyciu ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
// Add reference attachment
msg.Attachments.Add("Document.pdf", options);
Osadzanie wiadomości jako załączniki
Poniższy fragment kodu pokazuje, jak osadzić załącznik pliku MSG w wiadomości.
Odczyt osadzonych wiadomości z załączników
Poniższy fragment kodu pokazuje, jak odczytać osadzone wiadomości z załączników.
Wstawianie i zamiana załącznika
Aspose.Email API umożliwia wstawianie załączników pod określonym indeksem w wiadomości nadrzędnej. Umożliwia również zastąpienie treści jednego załącznika innym załącznikiem wiadomości.
Wypróbuj!
Uruchom ReplaceAttach prosty projekt aplikacji i wypróbuj możliwości Aspose.Email do zamiany załączników w praktyce.
Wstawianie załączników w określonych miejscach
API Aspose.Email zapewnia możliwość wstawienia załącznika MSG do nadrzędnego MSG przy użyciu metody Insert kolekcji MapiAttachmentCollection MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Poniższy fragment kodu pokazuje, jak wstawić załącznik w określone miejsce.
Zastąp zawartość załącznika
Można tego używać do zastąpienia zawartości osadzonych załączników nowymi przy pomocy metody Replace. Nie można jednak wstawić załącznika z PR_ATTACH_NUM = 4 (na przykład) w kolekcji, której collection.Count = 2. Poniższy fragment kodu pokazuje, jak zastąpić zawartość załącznika.
Zmień nazwę załączników w MapiMessage
Możliwe jest edytowanie wartości właściwości DisplayName w załącznikach MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Zapisz załączniki z cyfrowo podpisanych wiadomości
Aspose.Email API umożliwia pobranie lub ustawienie wartości wskazującej, czy wiadomość z podpisem Clear‑Signed zostanie zdekodowana.