Mbox Storage Files

Importování EML zpráv do PST souboru je běžnou potřebou, zejména pro uživatele přecházející mezi e-mailovými klienty nebo archivující e-maily pro účely ukládání a zálohování. Formát PST zachovává strukturu, formátování a přílohy obsahu, což jej činí vhodným pro bezproblémovou integraci a správu v aplikaci Outlook. Hlavní výhodou tohoto proprietárního formátu souboru Microsoft je schopnost vytvářet místní archivy e-mailových dat, což usnadňuje správu a přístup k e-mailům, kontaktům a dalším souvisejícím informacím offline. V tomto článku prozkoumáme, jak snadno a efektivně importovat EML do PST pomocí progresivní C# knihovny s příklady kódu a kroky.

.NET API pro správu EML

Aspose.Email pro .NET je robustní a univerzální API, které nabízí širokou škálu funkcí pro práci s e-mailovými zprávami a poštovními servery v .NET aplikacích. API poskytuje bezproblémovou integraci s populárními e-mailovými protokoly a formáty, což umožňuje vývojářům snadno vytvářet a manipulovat s e-mailovými zprávami.

Jednou z významných funkcí Aspose.Email je jeho rozsáhlá podpora pro převod e-mailů mezi různými formáty, včetně převodu EML do PST. Využitím bohaté sady tříd a metod poskytovaných Aspose.Email mohou vývojáři provádět složité úkoly související s e-maily, jako je správa příloh, správa složek a převod e-mailů mezi různými formáty. Předtím, než se pustíte do kódu, budete muset integrovat knihovnu do svého C# projektu. Můžete ji snadno získat stažením z webu Aspose nebo pomocí NuGet.

Install-Package Aspose.Email

Jakmile se knihovna stane součástí vašeho projektu, jste připraveni začít kódovat.

Import jedné EML zprávy do PST souboru

Aspose.Email komplexní API poskytuje jednoduchý a intuitivní příklad kódu a kroky pro přidání EML zprávy do PST souboru:

  1. Vytvořte nový osobní úložiště pomocí metody Create třídy PersonalStorage, přičemž jako parametry určete název souboru a verzi formátu.
  2. Vytvořte předdefinovanou složku “Doručená pošta” v PST souboru pomocí metody CreatePredefinedFolder třídy PersonalStorage, určující “Doručená pošta” jako název složky a StandardIpmFolder.Inbox jako typ složky.
  3. Načtěte e-mailovou zprávu ze souboru pomocí metody ‘Load’ třídy MapiMessage, přičemž jako parametry určete její název a instanci EmlLoadOptions.
  4. Přidejte načtenou e-mailovou zprávu do dříve vytvořené složky Doručená pošta v PST souboru pomocí metody AddMessage třídy FolderInfo.
using (var pst = PersonalStorage.Create("test.pst", FileFormatVersion.Unicode))
{
var inboxFolder = pst.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox);
var msg = MapiMessage.Load("test.eml", new EmlLoadOptions());
inboxFolder.AddMessage(msg);
}

V důsledku toho je vytvořen nový osobní úložiště s názvem “test.pst”, zpráva načtená ze souboru “test.eml” je přidána do složky Doručená pošta a je k dispozici pro další manipulaci nebo uložení.

Import více EML zpráv do PST souboru

Aspose.Email umožňuje přidat sadu zpráv ze složky do PST souboru. Metoda AddMessages třídy FolderInfo vám umožňuje importovat více než jednu EML zprávu do složky Doručená pošta v úložném souboru. Následující příklad kódu vám ukáže, jak tuto funkci implementovat do vašeho projektu:

  1. Vytvořte nový osobní úložiště pomocí metody Create třídy PersonalStorage, přičemž jako parametry určete název souboru a verzi formátu.
  2. Vytvořte předdefinovanou složku “Doručená pošta” v PST souboru pomocí metody CreatePredefinedFolder třídy PersonalStorage, určující “Doručená pošta” jako název složky a StandardIpmFolder.Inbox jako typ složky.
  3. Přidejte jednu nebo více e-mailových zpráv ze složky do dříve vytvořené složky Doručená pošta v PST souboru pomocí metody AddMessages třídy FolderInfo, přičemž jako parametry určete objekt MapiMessageEnumerator, který představuje zprávy, které mají být importovány ze specifikované cesty složky.
using (var pst = PersonalStorage.Create("test.pst", FileFormatVersion.Unicode))
{
var inboxFolder = pst.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox);
inboxFolder.AddMessages(new MapiMessageEnumerator("PathToFolder"));
}

Zde využíváme ‘MapiMessageEnumerator’ k iteraci přes EML soubory ve zdrojové složce a jejich přidání do PST souboru.

Implementace enumerátoru MapiMessage

S Aspose.Email můžete definovat třídu ‘MapiMessageEnumerator’, která implementuje rozhraní IEnumerable. Tato třída umožňuje iteraci přes kolekci objektů MapiMessage, které představují e-mailové zprávy uložené jako .eml soubory ve specifikované složce. Vnořená třída Enumerator v MapiMessageEnumerator slouží jako iterátor, provádí načítání EML souborů jako objektů MapiMessage a spravuje proces iterace. Obsahuje metody pro iteraci přes soubory, uvolnění prostředků a resetování enumerátoru.

Následující příklad kódu vám ukáže, jak programově iterovat přes kolekci MapiMessages:

  1. Definujte třídu ‘MapiMessageEnumerator’, která přijímá parametr ‘folderPath’, který určuje adresář, kde se nacházejí .eml soubory.
  2. Vytvořte a vraťte novou instanci třídy ‘Enumerator’ pomocí metody ‘GetEnumerator’, přičemž předáte cestu ke složce.
  3. Uložte ‘folderPath’ do pole a použijte ‘IEnumerator’ k iteraci přes cesty k souborům ve složce.
  4. Když je třída ‘Enumerator’ konstruována, inicializujte ‘folderPath’ a zavolejte metodu ‘Reset()’, abyste připravili ‘fileEnumerator’.
  5. Implementujte vlastnost ‘Current’ a explicitně vlastnost Current rozhraní IEnumerator.
  6. Poskytněte metodu ‘Dispose’ k uvolnění ‘fileEnumerator’ a aktuálního ‘MapiMessage’, pokud existují.
  7. Použijte metodu ‘MoveNext’ k iteraci přes cesty k souborům, pokuste se načíst ‘MapiMessage’ ze souboru a zaznamenat nebo zpracovat jakékoli chyby, které nastanou.
  8. V metodě ‘Reset’ uvolněte ‘fileEnumerator’ a vytvořte nový tím, že enumerujete .eml soubory v rámci ‘folderPath’.
public class MapiMessageEnumerator : IEnumerable<MapiMessage>
{
private readonly string folderPath;
public MapiMessageEnumerator(string folderPath)
{
this.folderPath = folderPath;
}
public IEnumerator<MapiMessage> GetEnumerator()
{
return new Enumerator(folderPath);
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
private class Enumerator : IEnumerator<MapiMessage>
{
private readonly string folderPath;
private IEnumerator<string> fileEnumerator;
public Enumerator(string folderPath)
{
this.folderPath = folderPath;
Reset();
}
public MapiMessage Current { get; private set; }
object IEnumerator.Current
{
get { return Current; }
}
public void Dispose()
{
fileEnumerator.Dispose();
Current?.Dispose();
}
public bool MoveNext()
{
while (fileEnumerator.MoveNext())
{
var filePath = fileEnumerator.Current;
try
{
Current?.Dispose(); // Dispose previous MailMessage if any
Current = MapiMessage.Load(filePath, new EmlLoadOptions());
return true;
}
catch (Exception ex)
{
// Log or handle the error
Console.WriteLine($"Failed to parse message: {ex.Message}");
}
}
return false;
}
public void Reset()
{
fileEnumerator?.Dispose();
fileEnumerator = Directory.EnumerateFiles(folderPath, "*.eml").GetEnumerator();
Current = null;
}
}
}

Závěr

Na závěr, ať už přecházíte mezi e-mailovými klienty nebo archivujete e-mailová data pro účely ukládání a zálohování, Aspose.Email pro .NET poskytuje spolehlivé a funkcemi bohaté řešení pro převod EML souborů do formátu PST, což je efektivní a jednoduchý proces. S intuitivními příklady kódu a komplexní dokumentací mohou vývojáři snadno implementovat tuto základní funkčnost do svých projektů. Kromě toho bezplatné forum nabízí komunitní podporu pro jakékoli dotazy nebo problémy, které mohou vzniknout během implementace. Pro více informací o vysokých kódových funkcích API navštivte naše referenční zdroje.

Viz také