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

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

پیوست یک امضا به ایمیل

این SecureEmailManager.attachSignature متد به شما امکان می‌دهد امضاهای دیجیتالی را به پیام‌های ایمیل پیوست کنید. پس از پیوست امضا، نتایج را از طریق ویژگی‌هایی مانند IsSigned, MessageClass، و جزئیات پیوست.

شما می‌توانید یک MailMessage یا MapiMessage، یک گواهی‌نامه خصوصی، و گزینه‌های امضا را برای سفارشی‌سازی فرآیند ضمیمه‌کردن امضا همراه با SignatureOptions کلاس که به کاربران امکان می‌دهد گزینه‌های مختلفی را برای ضمیمه کردن امضا مشخص کنند، از جمله امضاهای جداشدنی یا غیرجداشده.

نمونه کد زیر نشان می‌دهد چگونه یک پیام را از فایل بارگذاری کنید، امضای دیجیتالی جداشدنی و غیرجداشده را با استفاده از یک گواهی‌نامه خصوصی ضمیمه کنید، و سپس بررسی کنید آیا امضاها به‌طور موفقیت‌آمیز ضمیمه شدند یا نه.

String fileName = "message.msg";
String privateCertFile = "certFile.pfx";
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "password");

MapiMessage msg = MapiMessage.load(fileName);

SignatureOptions opt = new SignatureOptions();
opt.setDetached(true);
MapiMessage signedDetached = new SecureEmailManager().attachSignature(msg, privateCert, opt);

if (signedDetached.isSigned()) {
    System.out.println("Detached Signature Attached Successfully.");
}

opt.setDetached(false);
MapiMessage signedNonDetached = new SecureEmailManager().attachSignature(msg, privateCert, opt);

if (signedNonDetached.isSigned()) {
    System.out.println("Non-Detached Signature Attached Successfully.");
}

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

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Load mail message
MailMessage message = MailMessage.load(dataDir + "Message.eml", new EmlLoadOptions());
// Save as MSG
message.save(dataDir + "ConvertEMLToMSG_out.msg", SaveOptions.getDefaultMsgUnicode());

حذف امضا از فایل پیام Outlook

اگر مجبور به حذف امضا از پیام در قالب MAPI هستید، برای مثال به دلایل سازگاری، Aspose.Email پیشنهاد می‌کند MapiMessage.removeSignature متد و MapiMessage.isSigned ویژگی.

قطعه کد زیر نشان می‌دهد چگونه یک پیام MAPI را از فایل بارگذاری کنید، بررسی کنید آیا امضای دیجیتالی دارد یا نه، و اگر دارد، پیام جدیدی بدون امضای دیجیتالی ایجاد کنید:

MapiMessage msg = MapiMessage.load(fileName);

if (msg.isSigned()) {
    MapiMessage unsignedMsg = msg.removeSignature();
}

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

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MailMessage msg = MailMessage.load(dataDir + "message.eml");
MapiMessage mapi = MapiMessage.fromMailMessage(msg, new MapiConversionOptions(OutlookMessageFormat.Unicode));
// Save File to disk
mapi.save(dataDir + "ConvertMIMEMessagesFromMSGToEML_out.msg");

رمزگشایی یک فایل MSG با گواهی‌نامه

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

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

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

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

if (msg.isEncrypted()) {
    MapiMessage decryptedMsg = msg.decrypt(privateCert);
    //MapiMessage decryptedMsg = msg.decrypt(/*byte[]*/rawPrivateCert, "password");
}