مدیریت پیام‌های اوتلوک

ذخیره ایمیل‌ها به‌صورت HTML

Aspose.Email امکان ذخیره منابع ایمیل با مسیرهای نسبی را هنگام خروجی به فرمت HTML فراهم می‌کند. این ویژگی انعطاف‌پذیری بیشتری در نحوه ارجاع منابع در فایل HTML خروجی می‌دهد و به اشتراک‌گذاری و نمایش ایمیل‌های ذخیره‌شده در سیستم‌های مختلف را آسان می‌کند. برای ذخیره منابع با مسیرهای نسبی، از HtmlSaveOptions.UseRelativePathToResources property. مقدار پیش‌فرض این ویژگی false است (منابع با مسیرهای مطلق ذخیره می‌شوند). وقتی به true تنظیم شود، منابع با مسیرهای نسبی ذخیره می‌شوند.

فایل‌های HTML با مسیرهای نسبی قابل حمل‌تر هستند و می‌توانند در هر ساختار فایل میزبانی به‌درستی نمایش داده شوند. می‌توانید بین مسیرهای مطلق و نسبی بسته به نیازها انتخاب کنید. می‌توانید مسیرهای سفارشی برای منابع با استفاده از ویژگی تعریف کنید. مقدار پیش‌فرض این ویژگی false است (منابع با مسیرهای مطلق ذخیره می‌شوند). وقتی به true تنظیم شود، منابع با مسیرهای نسبی ذخیره می‌شوند. ResourceHtmlRendering رویداد.

نمونه کد زیر نشان می‌دهد چگونه یک ایمیل را با مسیر نسبی پیش‌فرض به منابع ذخیره کنید:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

در این حالت، منابع در پوشه [نام فایل html]_files، در همان مسیر فایل .html ذخیره می‌شوند و HTML منابع را از طریق مسیرهای نسبی ارجاع می‌دهد.

نمونه کد زیر نشان می‌دهد چگونه با مسیر مطلق به منابع ذخیره شود:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = false
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

همان‌طور که در مورد اول بوده، به‌طور پیش‌فرض منابع در پوشه [نام فایل html]_files ذخیره می‌شوند، اما HTML منابع را با مسیرهای مطلق ارجاع می‌دهد.

با استفاده از ResourceHtmlRendering رویداد، می‌توانید مسیرهای نسبی یا مطلق سفارشی برای منابع تنظیم کنید. هنگام سفارشی‌سازی مسیرها با ResourceHtmlRendering هندلر رویداد، و چون UseRelativePathToResources اگر روی true تنظیم شود، باید مسیر نسبی را به PathToResourceFile ویژگی برای اطمینان از ارجاع صحیح.

نمونه کد زیر نشان می‌دهد چگونه مسیر نسبی سفارشی با استفاده از رویداد 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);

تبدیل MSG به پیام‌های MIME

API Aspose.Email امکان تبدیل فایل‌های MSG به پیام‌های MIME را با استفاده از ToMailMessage متد.

تنظیم زمان‌سنجی برای تبدیل و بارگذاری پیام

ویژگی‌های زیر به شما امکان می‌دهند زمان‌سنجی را به میلی‌ثانیه برای فرآیند تبدیل و بارگذاری تنظیم کنید:

نمونه کد زیر نشان می‌دهد چگونه در حین تبدیل یک پیام، زمان‌سنجی (timeout) را تنظیم کنید:

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);

تبدیل MSG به EML با حفظ بدنه RTF

تبدیل یک فایل MSG به EML با حفظ بدنه RTF می‌تواند به دو روش انجام شود:

هر دو ویژگی مقدار دریافت یا تعیین می‌کند که آیا بدنه rtf در MailMessage نگهداری شود یا نه.

قطعه کدهای زیر نشان می‌دهند چگونه یک فایل MSG را به EML تبدیل و بدنه 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);

مدیریت فایل‌های قالب Outlook (.OFT)

قالب‌های Outlook وقتی می‌خواهید پیام ایمیلی مشابه را بارها ارسال کنید بسیار مفید هستند. به‌جای آماده‌سازی پیام از صفر هر بار، ابتدا پیام را در Outlook آماده کنید و به‌عنوان قالب Outlook (OFT) ذخیره کنید. پس از آن، هر زمان که نیاز به ارسال پیام داشتید، می‌توانید آن را از قالب ایجاد کنید و زمان نوشتن متن مشابه در بدنه یا موضوع، تنظیم قالب‌بندی و غیره را صرفه‌جویی کنید. Aspose.Email’s MailMessage کلاس می‌تواند برای بارگذاری و خواندن یک فایل قالب آوتلوک (OFT) استفاده شود. پس از بارگذاری قالب آوتلوک در یک نمونه از MailMessage کلاس، می‌توانید فرستنده، گیرنده، بدنه، موضوع و سایر ویژگی‌ها را به‌روزرسانی کنید. پس از به‌روزرسانی ویژگی‌ها:

  • ارسال ایمیل با استفاده از SmtpClient کلاس یا
  • ذخیره پیام به‌صورت MSG و انجام به‌روزرسانی‌ها/اعتبارسنجی‌های بیشتر با استفاده از Microsoft Outlook.

در نمونه‌های کد زیر، ما:

  1. بارگذاری قالب با استفاده از MailMessage کلاس.
  2. به‌روزرسانی برخی از ویژگی‌ها.
  3. ذخیره پیام در قالب MSG.

قطعه کد زیر نشان می‌دهد چگونه فایل OFT را بارگذاری کنید، پیام را به‌روز کنید و در قالب MSG ذخیره کنید.

ذخیره فایل‌های MSG به‌عنوان قالب‌ها

قطعه کد زیر نشان می‌دهد چگونه فایل MSG آوتلوک را به‌عنوان قالب ذخیره کنید.

تعیین نوع پیام MAPI (OFT یا MSG)

هنگام بارگذاری یک شیء MapiMessage از فایل، ممکن است نیاز داشته باشید تعیین کنید آیا پیام بارگذاری شده یک فایل الگو است یا یک ایمیل عادی. با استفاده از IsTemplate ویژگی MapiMessage کلاس، می‌توانید به‌دقت تشخیص دهید آیا ایمیل یک الگو است یا خیر. این قابلیت هنگام پردازش انواع مختلف فایل‌های ایمیل در برنامه‌ها و سیستم‌ها مفید است.

مثال کد زیر نشان می‌دهد چگونه تعیین کنیم آیا MapiMessage به صورت OFT است یا 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

ذخیره MapiMessage یا MailMessage در قالب OFT

این SaveOptions کلاس امکان تعیین گزینه‌های اضافی هنگام ذخیره MailMessage یا MapiMessage در قالب خاصی را فراهم می‌کند.

نمونه کد زیر نشان می‌دهد چگونه یک پیام را به قالب 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);
}

مدیریت پیام‌های امضاشده دیجیتالی

Aspose.Email الگوریتم کامل شیء ایمیل S/MIME را پیاده‌سازی می‌کند. این به API قدرت کامل برای حفظ امضاهای دیجیتال هنگام تبدیل پیام‌ها بین فرمت‌ها می‌دهد.

حفظ امضا در هنگام تبدیل EML به MSG

Aspose.Email امضای دیجیتال را هنگام تبدیل از EML به MSG حفظ می‌کند. قطعه کد زیر نشان می‌دهد چگونه از EML به MSG تبدیل کنید.

تبدیل پیام‌های S/MIME از MSG به EML

Aspose.Email امضای دیجیتال را هنگام تبدیل از MSG به EML حفظ می‌کند همان‌طور که در قطعه کد زیر نشان داده شده است.

بررسی امضاهای ایمیل‌های امن

ویژگی‌های زیر برای بررسی امضای اشیاء MapiMessage موجود هستند.

نمونه کد زیر نشان می‌دهد چگونه ویژگی‌ها را در پروژه خود پیاده‌سازی کنید:

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);

حذف امضاها از MapiMessage‌ها

برای سازگاری بهتر، MapiMessage.RemoveSignature متد و MapiMessage.IsSigned دارای ویژگی‌ها برای حذف امضای دیجیتالی از یک پیام استفاده می‌شوند.

قطعه کد زیر نشان می‌دهد چگونه این ویژگی‌ها را در پروژه خود پیاده‌سازی کنید:

var msg = MapiMessage.Load(fileName);

if (msg.IsSigned)
{
    var unsignedMsg = msg.RemoveSignature();
}

رمزگشایی MapiMessage‌ها با گواهی‌نامه‌ها

اگر پیام‌های MAPI رمزگذاری شده دارید و نیاز به رمزگشایی آن‌ها با کلید خصوصی ذخیره‌شده در یک گواهی‌نامه دارید، ویژگی‌های زیر Aspose.Email می‌توانند مفید باشند:

  • MapiMessage.IsEncrypted - مقدار نشان‌دهنده این که آیا پیام رمزنگاری شده است یا خیر را برمی‌گرداند.
  • MapiMessage.Decrypt() - این پیام را رمزگشایی می‌کند (متد جستجوی گواهی‌نامه و کلید خصوصی مناسب در مخازن My کاربر و کامپیوتر جاری).
  • MapiMessage.Decrypt(X509Certificate2 certificate) - این پیام را با گواهی‌نامه رمزگشایی می‌کند.

قطعه کد زیر نشان می‌دهد چگونه با پیام‌های MAPI رمزگذاری شده کار کنید:

var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");

if (msg.IsEncrypted);
{
    var decryptedMsg = msg.Decrypt(privateCert);
}

تنظیم دسته‌بندی‌های رنگی برای فایل‌های MSG

یک دسته رنگی یک پیام ایمیل را برای نوعی اهمیت یا دسته‌بندی علامت‌گذاری می‌کند. Microsoft Outlook به کاربران اجازه می‌دهد تا دسته‌های رنگی را برای تمایز ایمیل‌ها اختصاص دهند. برای مدیریت دسته رنگی، از FollowUpManager. شامل توابعی مانند AddCategory, RemoveCategory, ClearCategories و GetCategories.

  • AddCategory می‌گیرد MapiMessage و رشته دسته رنگی، برای مثال "دسته بنفش" یا "دسته قرمز" به عنوان آرگومان.
  • RemoveCategory می‌گیرد MapiMessage و رشته دسته رنگی که باید از پیام حذف شود.
  • ClearCategories برای حذف تمام دسته‌های رنگی از پیام استفاده می‌شود.
  • GetCategories برای بازیابی تمام دسته‌های رنگی از یک پیام خاص استفاده می‌شود.

مثال زیر کارهای زیر را انجام می‌دهد:

  1. اضافه کردن یک دسته رنگی.
  2. اضافه کردن یک دسته رنگی دیگر.
  3. دریافت لیست تمام دسته‌ها.
  4. حذف تمام دسته‌ها.

دسترسی به اطلاعات پیگیری در فایل‌های MSG

API Aspose.Email امکان دسترسی به اطلاعات پیگیری را از پیام ارسال‌شده یا دریافت‌شده فراهم می‌کند. می‌تواند اطلاعات دریافت، دریافت تحویل و نتایج نظرسنجی را از یک فایل پیام بازیابی کند.

دریافت اطلاعات دریافت خواندن و تحویل

قطعه کد زیر نشان می‌دهد چگونه اطلاعات دریافت و تحویل رسیدها را بازیابی کنید.

ایجاد پیام‌های فوروارد و پاسخ

API Aspose.Email امکان ایجاد و قالب‌بندی پیام‌های فوروارد و پاسخ را فراهم می‌کند. ReplyMessageBuilder و ForwardMessageBuilder کلاس‌های این API به‌صورت جداگانه برای ایجاد پیام‌های Reply و Forward استفاده می‌شوند. یک پیام Reply یا Forward می‌تواند با استفاده از هر یک از حالت‌های OriginalMessageAdditionMode enum. این enum مقادیر زیر را دارد:

  • OriginalMessageAdditionMode.None - پیام اصلی در پیام پاسخ گنجانده نشده است.
  • OriginalMessageAdditionMode.Attachment - پیام اصلی به‌عنوان پیوست در پیام پاسخ گنجانده می‌شود
  • OriginalMessageAdditionMode.Textpart - پیام اصلی به‌صورت متن در بدنه پیام پاسخ گنجانده می‌شود

ایجاد پیام‌های پاسخ

قطعه کد زیر نشان می‌دهد چطور یک پیام پاسخ ایجاد کنید.

ایجاد پیام‌های فوروارد

کد زیر نشان می‌دهد چگونه یک پیام Forward ایجاد کنید.