c# - 使用 C# 加密带有附件的电子邮件
问题描述
我正在尝试从系统发送一封将被加密的电子邮件。当证书安装在客户端计算机中时,用户将能够阅读电子邮件的内容。如果未安装证书,则不会显示电子邮件内容。
下面是相同的代码
X509Certificate2 SignCert = new X509Certificate2(SigningCertPath, "Password");
X509Certificate2 EncryptCert = new X509Certificate2(EncryptingCertPath, "");
Attachment attachment = new System.Net.Mail.Attachment("C:/Files/Sample.docx");
MailMessage Msg = new MailMessage();
StringBuilder Message = new StringBuilder();
Message.AppendLine("Content-Type: text/" + ((HTML) ? "html" : "plain") +
"; charset=\"iso-8859-1\"");
Message.AppendLine("Content-Transfer-Encoding: 7bit");
Message.AppendLine();
Message.AppendLine(Body);
byte[] BodyBytes = Encoding.ASCII.GetBytes(Message.ToString());
EnvelopedCms ECms = new EnvelopedCms(new ContentInfo(BodyBytes));
CmsRecipient Recipient = new CmsRecipient(
SubjectIdentifierType.IssuerAndSerialNumber, EncryptCert);
ECms.Encrypt(Recipient);
byte[] EncryptedBytes = ECms.Encode();
MemoryStream memStream = new MemoryStream(EncryptedBytes);
AlternateView av = new AlternateView(memStream,
"application/pkcs7-mime; smime-type=signed-data;name=smime.p7m");
Msg.AlternateViews.Add(av);
SignedCms Cms = new SignedCms(new ContentInfo(EncryptedBytes));
CmsSigner Signer = new CmsSigner
(SubjectIdentifierType.IssuerAndSerialNumber, SignCert);
Cms.ComputeSignature(Signer);
byte[] SignedBytes = Cms.Encode();
string smtp_from = "From Email Address";
MailAddress fromAddress = new MailAddress(smtp_from, "From EmailAddress");
Msg.From = fromAddress;
Msg.To.Add(new MailAddress(To));
Msg.Subject = Subject;
//Msg.Attachments.Add(attachment);
SmtpClient smtpClient = new SmtpClient();
string smtp_server = "smtpdetails";
int smtp_port = 587;
string smtp_username = "smtpusername";
string smtp_password = "smtp_password";
smtpClient.Host = smtp_server;
smtpClient.Port = smtp_port;
System.Net.NetworkCredential myCredentials =
new System.Net.NetworkCredential(smtp_username, smtp_password);
smtpClient.Credentials = myCredentials;
smtpClient.Send(Msg);
该代码运行良好,没有任何问题,并发送了一封加密的电子邮件。但是,当我尝试向代码添加附件时,加密逻辑不起作用,我收到一封带有附件的未加密电子邮件。
我尝试使用 mimekit,但是没有用。谁能让我知道我需要为我的场景做哪些改变?我不想加密附件。我只想加密电子邮件内容并为其添加附件。
感谢您的理解。
解决方案
推荐阅读
- r - 将具有数据框名称的数据框绑定为附加的 id 列
- sql - 从 JSON_TABLE 读取 JSON_VALUE 时出现 ORA-31013
- virtual - 如何在 Oculus Go 上预览 Unreal Engine 4 项目
- python - Tensorflow 安装问题:ImportError: DLL load failed with error code -1073741795
- r - R中有序分类数据的因子分析的因子得分
- c# - 什么是 Identity Server 4 引发事件
- keras - Keras:处理大型图像数据集
- regex - 正则表达式强制组顺序
- google-bigquery - 无法在 appengine 中使用 bigquery:“ImportError:没有名为 google.cloud.bigquery 的模块”
- r - 为什么 abline 不会显示 glm 与 Gamma 家族的线?