NET के लिए ईमेल प्रारूप कनवर्टर
Aspose.Email LowCode Converter विभिन्न प्रारूपों के बीच ईमेल संदेशों को कम कोड जटिलता के साथ परिवर्तित करने के लिए एक सरल, उच्च-स्तरीय एपीआई प्रदान करता है. इस डेवलपर गाइड में मुख्य कार्यक्षमता, कार्यान्वयन पैटर्न और .NET अनुप्रयोगों में रूपांतरक का उपयोग करने की सर्वोत्तम प्रथाओं को कवर किया गया ह.
इमेज कॉपीरइट.LowCode
The Aspose.Email.LowCode
नामस्पेस में कक्षाएं शामिल हैं जो ईमेल प्रारूप रूपांतरण संचालन को सरल बनाने के लिए डिज़ाइन की जाती हैं. मुख्य घटक यह है क Converter
क्लास, जो लोकप्रिय प्रारूपों के बीच ईमेल संदेशों को परिवर्तित करने के लिए स्थिर तरीकों की पेशकश करता है, जिसमें EML, MSG, HTML, MHT और MHTML शामिल ह.
कुंजी घटक
- Converter : ईमेल प्रारूप परिवर्तन के लिए स्थिर रूपांतरण विधिय
- IoutputHandler : परिवर्तित आउटपुट स्ट्रीम को संभालने के लिए इंटरफ़ेस
- FolderOutputHandler : फ़ोल्डर-आधारित आउटपुट स्टोरेज के लिए अंतर्निहित कार्यान्वयन
शुरू करने के लिए
Installation
NuGet Package Manager के माध्यम से Aspose.Email पैकेज स्थापित कर:
Install-Package Aspose.Email
नामांकन घोषण
using Aspose.Email.LowCode;
using System.IO;
using System.Threading.Tasks;
कोर रूपांतरण विध
जनरल फॉर्मेट रूपांतरण
The Convert
विधि स्पष्ट आउटपुट प्रकार विनिर्देश के साथ एक लचीला प्रारूप रूपांतरण प्रदान करता ह:
public static Task Convert(Stream input, string nameWithExtension, IOutputHandler handler, string outputType)
उदाहरण के लिए अनुप्रयोग:
using var inputStream = File.OpenRead("email.eml");
var outputHandler = new FolderOutputHandler(@"C:\ConvertedEmails");
await Converter.Convert(inputStream, "email.eml", outputHandler, "html");
विशिष्ट रूपांतरण विध
कनवर्टर सामान्य रूपांतरण परिदृश्यों के लिए समर्पित विधियों प्रदान करता ह:
HTML प्रारूप में परिवर्तित कर
await Converter.ConvertToHtml(inputStream, "email.eml", outputHandler);
MSG प्रारूप में परिवर्तित कर
await Converter.ConvertToMsg(inputStream, "email.eml", outputHandler);
EML प्रारूप में परिवर्तित कर
await Converter.ConvertToEml(inputStream, "email.msg", outputHandler);
MHTML/MHT प्रारूप में परिवर्तित कर
await Converter.ConvertToMhtml(inputStream, "email.eml", outputHandler);
await Converter.ConvertToMht(inputStream, "email.eml", outputHandler);
EML / MSG विशिष्ट रूपांतरण
स्वचालित प्रारूप का पता लगाने के लिए एमएल और एमएसज फॉर्मेट्स:
await Converter.ConvertEmlOrMsg(inputStream, "email.eml", outputHandler, "html");
आउटपुट व्यापारी का कार्यान्वयन
FolderOutputHandler का उपयोग कर
इमारत म FolderOutputHandler
क्लास स्वचालित रूप से एक निर्दिष्ट निर्देशिका में परिवर्तित फ़ाइलों को सहेजता ह:
public class FolderOutputHandler : IOutputHandler
{
public FolderOutputHandler(string path)
public string Path { get; set; }
}
उदाहरण का उपयोग कर:
var outputHandler = new FolderOutputHandler(@"C:\OutputDirectory");
कस्टम आउटपुट व्यापार
कार्यान्वयन के लिए IOutputHandler
कस्टम आउटपुट प्रसंस्करण के लिए इंटरफ़ेस:
public class CustomOutputHandler : IOutputHandler
{
public async Task AddOutputStream(string name, Func<Stream, Task> writeAction)
{
// Custom async implementation
using var customStream = CreateCustomStream(name);
await writeAction(customStream);
}
public void AddOutputStream(string name, Action<Stream> writeAction)
{
// Custom synchronous implementation
using var customStream = CreateCustomStream(name);
writeAction(customStream);
}
}
प्रारूप मैट्रिक्स का समर्थन
इनपुट फॉर्मेट | आउटपुट फॉर्मेट | Method |
---|---|---|
एमएल | HTML, MSG, MHTML और MHT | ConvertToHtml() , ConvertToMsg() , आद. |
एमएसज | HTML, EML, MHTML और MHT | ConvertToHtml() , ConvertToEml() , आद. |
किसी भी ईमेल फॉर्मेट | उपयोगकर्ता-विशिष्ट | Convert() आउटपुट प्रकार के पैरामीटर |
उन्नत कार्यान्वयन पैटर्न
बैच प्रसंस्करण कार्यान्वयन
public class EmailBatchConverter
{
private readonly IOutputHandler _outputHandler;
public EmailBatchConverter(IOutputHandler outputHandler)
{
_outputHandler = outputHandler;
}
public async Task ConvertBatch(IEnumerable<string> emailFiles, string outputFormat)
{
var conversionTasks = emailFiles.Select(async file =>
{
using var stream = File.OpenRead(file);
var fileName = Path.GetFileName(file);
await Converter.Convert(stream, fileName, _outputHandler, outputFormat);
});
await Task.WhenAll(conversionTasks);
}
}
त्रुटि प्रबंधन पैटर्न
public async Task<ConversionResult> SafeConvert(string inputFile, string outputFormat)
{
try
{
using var inputStream = File.OpenRead(inputFile);
var outputHandler = new FolderOutputHandler(@"C:\Output");
var fileName = Path.GetFileName(inputFile);
await Converter.Convert(inputStream, fileName, outputHandler, outputFormat);
return new ConversionResult { Success = true };
}
catch (Exception ex)
{
return new ConversionResult
{
Success = false,
ErrorMessage = ex.Message
};
}
}
स्मृति-ऑप्टिमाइज़ेड स्ट्रीम प्रसंस्करण
public async Task ConvertWithMemoryOptimization(string inputFile)
{
using var inputStream = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, useAsync: true);
var outputHandler = new FolderOutputHandler(@"C:\Output");
await Converter.ConvertToHtml(inputStream, Path.GetFileName(inputFile), outputHandler);
}
कॉन्फ़िगरेशन और कस्टम
आउटपुट निर्देशिका संरचन
जब उपयोग कर FolderOutputHandler
, कनवर्टर मूल फ़ाइल संरचना को बनाए रखता ह:
var outputHandler = new FolderOutputHandler(@"C:\ConvertedEmails");
// Original: sample.eml → Output: C:\ConvertedEmails\sample.html
व्यक्तिगत नामकरण रणनीत
एक विशेष आउटपुट ट्रेनर के माध्यम से अनुकूलित फ़ाइल नाम लागू कर:
public class TimestampOutputHandler : IOutputHandler
{
private readonly string _basePath;
public TimestampOutputHandler(string basePath)
{
_basePath = basePath;
}
public async Task AddOutputStream(string name, Func<Stream, Task> writeAction)
{
var timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
var newName = $"{timestamp}_{name}";
var filePath = Path.Combine(_basePath, newName);
using var fileStream = File.Create(filePath);
await writeAction(fileStream);
}
// Synchronous implementation omitted for brevity
}
प्रदर्शन विचार
असेंबली ऑपरेशन
सभी रूपांतरण विधियों वापस Task
वस्तुओं, प्रभावी असेंक्रोन प्रसंस्करण की अनुमति देने के लिए:
public async Task ProcessMultipleEmailsAsync()
{
var tasks = new[]
{
ConvertEmailAsync("email1.eml"),
ConvertEmailAsync("email2.msg"),
ConvertEmailAsync("email3.eml")
};
await Task.WhenAll(tasks);
}
संसाधन प्रबंधन
उचित प्रवाह तैयारी सर्वोत्तम प्रदर्शन के लिए महत्वपूर्ण ह:
// Correct pattern
using (var inputStream = File.OpenRead("email.eml"))
{
await Converter.ConvertToHtml(inputStream, "email.eml", outputHandler);
}
// Alternative using statement
using var inputStream = File.OpenRead("email.eml");
await Converter.ConvertToHtml(inputStream, "email.eml", outputHandler);
स्मृति उपयोग अनुकूलन
बड़े ईमेल फ़ाइलों के लिए, स्ट्रीमिंग दृष्टिकोण पर विचार कर:
public async Task ConvertLargeEmail(string inputPath)
{
const int bufferSize = 65536; // 64KB buffer
using var inputStream = new FileStream(inputPath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize, true);
var outputHandler = new FolderOutputHandler(@"C:\Output");
await Converter.ConvertToHtml(inputStream, Path.GetFileName(inputPath), outputHandler);
}
एकीकरण उदाहरण
ASP.NET कोर वेब एपीआई एकीकरण
[ApiController]
[Route("api/[controller]")]
public class EmailConverterController : ControllerBase
{
[HttpPost("convert")]
public async Task<IActionResult> ConvertEmail(IFormFile emailFile, [FromQuery] string format = "html")
{
if (emailFile == null || emailFile.Length == 0)
return BadRequest("No file provided");
try
{
using var inputStream = emailFile.OpenReadStream();
var outputHandler = new MemoryOutputHandler();
await Converter.Convert(inputStream, emailFile.FileName, outputHandler, format);
return File(outputHandler.GetContent(), GetContentType(format), $"converted.{format}");
}
catch (Exception ex)
{
return StatusCode(500, $"Conversion failed: {ex.Message}");
}
}
private string GetContentType(string format) => format.ToLower() switch
{
"html" => "text/html",
"mhtml" => "message/rfc822",
"eml" => "message/rfc822",
_ => "application/octet-stream"
};
}
विंडोज सेवा प्रबंधन
public class EmailConverterService : BackgroundService
{
private readonly string _watchFolder;
private readonly string _outputFolder;
public EmailConverterService(IConfiguration config)
{
_watchFolder = config["EmailConverter:WatchFolder"];
_outputFolder = config["EmailConverter:OutputFolder"];
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var watcher = new FileSystemWatcher(_watchFolder, "*.eml");
watcher.Created += async (sender, e) => await ProcessEmailFile(e.FullPath);
watcher.EnableRaisingEvents = true;
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(1000, stoppingToken);
}
}
private async Task ProcessEmailFile(string filePath)
{
using var inputStream = File.OpenRead(filePath);
var outputHandler = new FolderOutputHandler(_outputFolder);
await Converter.ConvertToHtml(inputStream, Path.GetFileName(filePath), outputHandler);
}
}
Troubleshooting
आम समस्याएं और समाधान
Issue | Solution |
---|---|
FileNotFoundException | इनपुट फ़ाइल मार्ग और अनुमतिओं की जांच कर |
UnauthorizedAccessException | देखें आउटपुट निर्देशिका लिखने की अनुमत |
OutOfMemoryException | बड़े फ़ाइलों के लिए स्ट्रीमिंग दृष्टिकोण का उपयोग कर |
InvalidOperationException | इनपुट फ़ाइल के लिए वैध ईमेल प्रारूप सुनिश्चित कर |
Debugging टिप्स
समस्याओं को हल करने के लिए विस्तृत लॉगिंग की अनुमति द:
public async Task ConvertWithLogging(string inputFile)
{
var logger = LoggerFactory.Create(builder => builder.AddConsole()).CreateLogger<EmailConverter>();
try
{
logger.LogInformation($"Starting conversion of {inputFile}");
using var inputStream = File.OpenRead(inputFile);
var outputHandler = new FolderOutputHandler(@"C:\Output");
await Converter.ConvertToHtml(inputStream, Path.GetFileName(inputFile), outputHandler);
logger.LogInformation($"Successfully converted {inputFile}");
}
catch (Exception ex)
{
logger.LogError(ex, $"Failed to convert {inputFile}");
throw;
}
}