Gestion des messages signés numériquement

Aspose.Email implémente l’algorithme complet des objets de courriel S/MIME. Cela donne à l’API la capacité d’ajouter des signatures numériques aux courriels, de les préserver lors de la conversion entre formats, de les supprimer, etc.

Joindre une signature à un courriel

Le SecureEmailManager.attachSignature méthode vous permet de joindre des signatures numériques aux courriels. Après avoir joint la signature, vérifiez les résultats via des propriétés telles que IsSigned, MessageClass, ainsi que les détails de la pièce jointe.

Vous pouvez fournir un MailMessage ou MapiMessage, un certificat privé et des options de signature pour personnaliser le processus de jointure de signature avec le SignatureOptions classe qui permet aux utilisateurs de spécifier diverses options pour la jointure de signature, y compris les signatures détachées ou non détachées.

L’exemple de code suivant vous montre comment charger un message depuis un fichier, joindre une signature numérique détachée ou non détachée à l’aide d’un certificat privé, puis vérifier si les signatures ont été jointes avec succès.

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

Préservation de la signature lors de la conversion de EML en MSG

Aspose.Email conserve la signature numérique lors de la conversion de EML en MSG. Le fragment de code suivant vous montre comment convertir de EML en 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());

Supprimer la signature d’un fichier de message Outlook

Si vous avez besoin de retirer la signature d’un message au format MAPI, par exemple pour des raisons de compatibilité, Aspose.Email propose le MapiMessage.removeSignature méthode et le MapiMessage.isSigned propriété.

Le fragment de code suivant montre comment charger un message MAPI depuis un fichier, vérifier s’il est signé numériquement et, le cas échéant, créer un nouveau message sans la signature numérique :

MapiMessage msg = MapiMessage.load(fileName);

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

Conversion des messages S/MIME de MSG en EML

Aspose.Email conserve la signature numérique lors de la conversion de MSG en EML comme montré dans le fragment de code suivant.

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

Décrypter un fichier MSG avec un certificat

Si vous avez des messages MAPI chiffrés et devez les déchiffrer en utilisant la clé privée stockée dans un certificat, les fonctionnalités suivantes d’Aspose.Email peuvent être utiles :

Le fragment de code suivant montre comment travailler avec des messages MAPI chiffrés :

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