Správa digitálně podepsaných zpráv
Aspose.Email implementuje kompletní algoritmus objektu e‑mailu S/MIME. To dává API úplnou kontrolu nad přidáváním digitálních podpisů k e‑mailovým zprávám, jejich zachováváním při konverzi mezi formáty, odstraňováním a podobně.
Připojit podpis k e‑mailu
The SecureEmailManager.attachSignature metoda umožňuje připojit digitální podpisy k e‑mailovým zprávám. Po připojení podpisu ověřte výsledky pomocí vlastností jako IsSigned, MessageClass, a podrobnosti o příloze.
Můžete poskytnout MailMessage nebo MapiMessage, soukromý certifikát a možnosti podpisu k přizpůsobení procesu připojení podpisu pomocí SignatureOptions třída, která umožňuje uživatelům specifikovat různé možnosti pro připojení podpisu, včetně oddělených nebo neoddělených podpisů.
Následující ukázka kódu vám ukáže, jak načíst zprávu ze souboru, připojit oddělený i neoddělený digitální podpis pomocí soukromého certifikátu a následně zkontrolovat, zda byly podpisy úspěšně připojeny.
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.");
}
Zachování podpisu při konverzi z EML do MSG
Aspose.Email zachovává digitální podpis při konverzi z EML do MSG. Následující úryvek kódu vám ukazuje, jak provést konverzi 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());
Odstranění podpisu ze souboru Outlook zprávy
Pokud potřebujete odstranit podpis ze zprávy ve formátu MAPI, například z důvodů kompatibility, Aspose.Email nabízí MapiMessage.removeSignature metodu a MapiMessage.isSigned vlastnost.
Následující úryvek kódu ukazuje, jak načíst MAPI zprávu ze souboru, zkontrolovat, zda je digitálně podepsaná, a pokud ano, vytvořit novou zprávu bez digitálního podpisu:
MapiMessage msg = MapiMessage.load(fileName);
if (msg.isSigned()) {
MapiMessage unsignedMsg = msg.removeSignature();
}
Konverze S/MIME zpráv z MSG do EML
Aspose.Email zachovává digitální podpis při konverzi z MSG do EML, jak je ukázáno v následujícím úryvku kódu.
// 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");
Dešifrovat soubor MSG pomocí certifikátu
Pokud máte šifrované MAPI zprávy a potřebujete je dešifrovat pomocí soukromého klíče uloženého v certifikátu, mohou být užitečné následující funkce Aspose.Email:
- MapiMessage.isEncrypted - Získá hodnotu, která určuje, zda je zpráva šifrována.
- MapiMessage.decrypt() - Dešifruje tuto zprávu (metoda prohledává úložiště My aktuálního uživatele a počítače pro odpovídající certifikát a soukromý klíč).
- MapiMessage.decrypt(X509Certificate2 certificate) - Dešifruje tuto zprávu pomocí certifikátu.
Následující úryvek kódu ukazuje, jak pracovat s šifrovanými MAPI zprávami:
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");
}