Zarządzanie cyfrowo podpisanymi wiadomościami
Aspose.Email implementuje kompletny algorytm obiektów e‑mail S/MIME. Daje to API pełną możliwość dodawania podpisów cyfrowych do wiadomości e‑mail, zachowywania ich przy konwersji wiadomości między formatami, usuwania ich itp.
Dołączenie podpisu do e‑maila
Ten SecureEmailManager.attachSignature metoda pozwala dołączyć podpisy cyfrowe do wiadomości e‑mail. Po dołączeniu podpisu, zweryfikuj wyniki poprzez właściwości takie jak IsSigned, MessageClass, oraz szczegóły załącznika.
Możesz podać MailMessage lub MapiMessage, prywatny certyfikat oraz opcje podpisu, aby dostosować proces dołączania podpisu przy użyciu SignatureOptions klasa, która umożliwia użytkownikom określenie różnych opcji dołączania podpisu, w tym podpisów oddzielnych i nieoddzielnych.
Poniższy przykład kodu pokaże, jak załadować wiadomość z pliku, dołączyć oddzielny i nieoddzielny podpis cyfrowy przy użyciu prywatnego certyfikatu, a następnie sprawdzić, czy podpisy zostały pomyślnie dołączone.
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.");
}
Zachowanie podpisu przy konwersji z EML do MSG
Aspose.Email zachowuje podpis cyfrowy przy konwersji z EML do MSG. Poniższy fragment kodu pokazuje, jak konwertować z EML do 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());
Usunięcie podpisu z pliku wiadomości Outlook
Jeśli musisz usunąć podpis z wiadomości w formacie MAPI, na przykład ze względu na kompatybilność, Aspose.Email oferuje MapiMessage.removeSignature metoda i MapiMessage.isSigned właściwość.
Poniższy fragment kodu pokazuje, jak załadować wiadomość MAPI z pliku, sprawdzić, czy jest cyfrowo podpisana, a jeśli tak, utworzyć nową wiadomość bez podpisu cyfrowego:
MapiMessage msg = MapiMessage.load(fileName);
if (msg.isSigned()) {
MapiMessage unsignedMsg = msg.removeSignature();
}
Konwertowanie wiadomości S/MIME z MSG do EML
Aspose.Email zachowuje podpis cyfrowy przy konwersji z MSG do EML, jak pokazano w poniższym fragmencie kodu.
// 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");
Odszyfrowanie pliku MSG przy użyciu certyfikatu
Jeśli masz zaszyfrowane wiadomości MAPI i potrzebujesz je odszyfrować przy użyciu klucza prywatnego przechowywanego w certyfikacie, następujące funkcje Aspose.Email mogą być przydatne:
- MapiMessage.isEncrypted - Zwraca wartość wskazującą, czy wiadomość jest zaszyfrowana.
- MapiMessage.decrypt() - Odszyfrowuje tę wiadomość (metoda przeszukuje bieżące magazyny użytkownika i komputera My w poszukiwaniu odpowiedniego certyfikatu i klucza prywatnego).
- MapiMessage.decrypt(X509Certificate2 certificate) - Odszyfrowuje tę wiadomość przy użyciu certyfikatu.
Poniższy fragment kodu pokazuje, jak pracować z zaszyfrowanymi wiadomościami 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");
}