การจัดการข้อความที่มีลายเซ็นดิจิทัล

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