新增:发送通道电子邮箱支持S/MIMEOpenPGP加密 #417

This commit is contained in:
pppscn 2024-03-28 22:48:51 +08:00
parent e131690ac7
commit a5d263944f

View File

@ -192,21 +192,22 @@ class SmimeUtils(
generator.addCertificates(certStore) generator.addCertificates(certStore)
// 将邮件内容转换为 CMSSignedData // 将邮件内容转换为 CMSSignedData
//val originalContent = originalMessage.content as MimeMultipart //TODO: Outlook 不显示正文
val outputStream = ByteArrayOutputStream() val outputStream = ByteArrayOutputStream()
//originalContent.writeTo(outputStream) originalMessage.writeTo(outputStream)
originalMessage.writeTo(outputStream) //TODO: Thunderbird 会重复现实发件人
val contentData = CMSProcessableByteArray(outputStream.toByteArray()) val contentData = CMSProcessableByteArray(outputStream.toByteArray())
val signedData = generator.generate(contentData, true) val signedData = generator.generate(contentData, true)
// 创建 MimeMessage 并设置签名后的内容 // 创建 MimeMessage 并设置签名后的内容
val signedMessage = MimeMessage(originalMessage.session, ByteArrayInputStream(signedData.encoded)) val signedMessage = MimeMessage(originalMessage.session, ByteArrayInputStream(signedData.encoded))
/*
//TODO: 为什么不需要再设置这些?
signedMessage.setRecipients(Message.RecipientType.TO, originalMessage.getRecipients(Message.RecipientType.TO)) signedMessage.setRecipients(Message.RecipientType.TO, originalMessage.getRecipients(Message.RecipientType.TO))
signedMessage.setRecipients(Message.RecipientType.CC, originalMessage.getRecipients(Message.RecipientType.CC)) signedMessage.setRecipients(Message.RecipientType.CC, originalMessage.getRecipients(Message.RecipientType.CC))
signedMessage.setRecipients(Message.RecipientType.BCC, originalMessage.getRecipients(Message.RecipientType.BCC)) signedMessage.setRecipients(Message.RecipientType.BCC, originalMessage.getRecipients(Message.RecipientType.BCC))
signedMessage.addFrom(originalMessage.from) signedMessage.addFrom(originalMessage.from)
signedMessage.subject = originalMessage.subject signedMessage.subject = originalMessage.subject
signedMessage.sentDate = originalMessage.sentDate signedMessage.sentDate = originalMessage.sentDate
*/
signedMessage.setContent(signedData.encoded, "application/pkcs7-mime; name=smime.p7m; smime-type=signed-data") signedMessage.setContent(signedData.encoded, "application/pkcs7-mime; name=smime.p7m; smime-type=signed-data")
signedMessage.saveChanges() signedMessage.saveChanges()