C# 创建 MIME 消息?

Posted

技术标签:

【中文标题】C# 创建 MIME 消息?【英文标题】:C# Create MIME Message? 【发布时间】:2011-03-17 02:32:17 【问题描述】:

在 C# .Net 中是否有任何内置功能可以 MIME 文件?我要做的是:

    将文件转换为 MIME 消息 将 MIME 消息签名到 pcks 7 blob pkcs 7 blob 的 MIME 最后加密整个东西。

关于我将如何处理这件事的任何建议(不是加密或签名部分,而是 MIMEing)? MIME 文件的具体内容是什么?

【问题讨论】:

【参考方案1】:

有一个很好的商业套餐,只需支付少量费用: Mime4Net

【讨论】:

如果 Petey 接受这个答案,我将奖励赏金。我的猜测是商业包不会是我们想要的,但我不能代表 Petey。就我个人而言,我会走这条路来获得一些我相信会奏效的东西。 “小”IFF 你不想要源代码。【参考方案2】:

与其处理第三方库,我建议您查看核心 .NET 库。使用Attachment 类;它从 .NET 2 开始就存在了。

【讨论】:

是否可以从 System.Net.Mail 类中提取 MIME 编码的消息而不发送它? @Rup:好点。答案当然是否定的。至少,不是不深入研究内部 MailWriter 类。我显然误读了这个问题;如果他想对作为电子邮件的一部分的 MIME 附件进行签名和加密,就像在将内容传递给附件之前对其进行签名和加密一样简单。【参考方案3】:

据我所知,裸露的 .NET 中没有这样的支持。您必须尝试第三方库之一。其中之一是我们的Rebex Secure Mail for .NET。下面的代码展示了如何实现它:

using Rebex.Mail;
using Rebex.Mime.Headers;
using Rebex.Security.Certificates;
...

// load the sender's certificate and 
// associated private key from a file 
Certificate signer = Certificate.LoadPfx("hugo.pfx", "password");

// load the recipient's certificate 
Certificate recipient = Certificate.LoadDer("joe.cer");

// create an instance of MailMessage 
MailMessage message = new MailMessage();

// set its properties to desired values 
message.From = "hugo@example.com";
message.To = "joe@example.com";
message.Subject = "This is a simple message";
message.BodyText = "Hello, Joe!";
message.Bodyhtml = "Hello, <b>Joe</b>!";

// sign the message using Hugo's certificate 
message.Sign(signer);

// and encrypt it using Joe's certificate 
message.Encrypt(recipient);

// if you wanted Hugo to be able to read the message later as well, 
// you can encrypt it for Hugo as well instead - comment out the previous 
// encrypt and uncomment this one: 
// message.Encrypt(recipient, signer) 

(代码取自S/MIME tutorial page)

【讨论】:

以上是关于C# 创建 MIME 消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建 x-pkcs7-signature s/mime 消息?

JavaScript:创建 MIME 消息

给定 MIME 消息的文本表示,我如何重新创建该消息?

从 MIME 消息信息创建 EML 文件

使用 anmar.SharpMimeTools 解析 MIME 消息

在 Python 3 中为 HTTP 请求创建带有二进制组件的多部分 MIME 消息