How to Convert Email Formats with Aspose.Email LowCode Converter

How to Convert Email Formats with Aspose.Email LowCode Converter

Converting email messages between different formats is a common requirement in email processing applications. The Aspose.Email LowCode Converter provides a simplified approach to transform emails between EML, MSG, HTML, MHT, and MHTML formats with minimal code.

Overview

The Aspose.Email.LowCode.Converter class offers static methods for seamless email format conversion, eliminating the need for complex setup or configuration. This low-code approach makes email conversion accessible to developers of all skill levels.

Key Features

  • Multiple Format Support: Convert between EML, MSG, HTML, MHT, and MHTML formats
  • Stream-Based Processing: Work with streams for efficient memory usage
  • Asynchronous Operations: All conversion methods return Tasks for better performance
  • Flexible Output Handling: Use custom output handlers or folder-based storage

Step-by-Step Implementation

Step 1: Install Aspose.Email Package

Install-Package Aspose.Email

Step 2: Basic Email Conversion

using Aspose.Email.LowCode;
using System.IO;
using System.Threading.Tasks;

// Convert EML to MSG format
public async Task ConvertEmailToMsg()
{
    using var inputStream = File.OpenRead("sample.eml");
    var outputHandler = new FolderOutputHandler(@"C:\OutputFolder");
    
    await Converter.ConvertToMsg(inputStream, "sample.eml", outputHandler);
}

Step 3: Convert to HTML Format

public async Task ConvertEmailToHtml()
{
    using var inputStream = File.OpenRead("email.msg");
    var outputHandler = new FolderOutputHandler(@"C:\HtmlOutput");
    
    await Converter.ConvertToHtml(inputStream, "email.msg", outputHandler);
}

Step 4: Generic Format Conversion

public async Task ConvertToAnyFormat()
{
    using var inputStream = File.OpenRead("input.eml");
    var outputHandler = new FolderOutputHandler(@"C:\Output");
    
    // Convert to MHTML format
    await Converter.Convert(inputStream, "input.eml", outputHandler, "mhtml");
}

Step 5: Custom Output Handler Implementation

public class CustomOutputHandler : IOutputHandler
{
    public async Task AddOutputStream(string name, Func<Stream, Task> writeAction)
    {
        // Custom implementation for handling output streams
        using var fileStream = File.Create($@"C:\Custom\{name}");
        await writeAction(fileStream);
    }
    
    public void AddOutputStream(string name, Action<Stream> writeAction)
    {
        using var fileStream = File.Create($@"C:\Custom\{name}");
        writeAction(fileStream);
    }
}

Use Cases

Email Migration Systems

Convert legacy email formats during system migrations, ensuring compatibility across different email platforms.

Email Archive Processing

Transform archived emails into web-friendly formats for better accessibility and viewing in browsers.

Email Format Standardization

Standardize email formats across your organization by converting all emails to a consistent format.

Best Practices

  • Memory Management: Always use using statements with streams to ensure proper disposal
  • Error Handling: Implement try-catch blocks around conversion operations
  • Async Operations: Use async/await pattern for better application responsiveness
  • Batch Processing: Process multiple emails efficiently using parallel operations

Advanced Example

public class EmailConverter
{
    private readonly string _inputFolder;
    private readonly string _outputFolder;
    
    public EmailConverter(string inputFolder, string outputFolder)
    {
        _inputFolder = inputFolder;
        _outputFolder = outputFolder;
    }
    
    public async Task ConvertAllEmailsToHtml()
    {
        var emailFiles = Directory.GetFiles(_inputFolder, "*.*")
            .Where(f => f.EndsWith(".eml") || f.EndsWith(".msg"));
        
        var outputHandler = new FolderOutputHandler(_outputFolder);
        
        var tasks = emailFiles.Select(async file =>
        {
            try
            {
                using var stream = File.OpenRead(file);
                var fileName = Path.GetFileName(file);
                await Converter.ConvertToHtml(stream, fileName, outputHandler);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Failed to convert {file}: {ex.Message}");
            }
        });
        
        await Task.WhenAll(tasks);
    }
}

Troubleshooting

  • Invalid Format: Ensure the input file extension matches the actual format
  • Permission Issues: Verify write permissions for the output directory
  • Large Files: Consider memory usage when processing large email files

The Aspose.Email’s LowCode Converter simplifies email format conversion, making it an ideal choice for developers who need reliable email processing capabilities with minimal code complexity.

 Slovenčina