Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 能否明确定义电子邮件的S/MIME内容类型?_C#_Email_Mime Types_Smime_Rebex - Fatal编程技术网

C# 能否明确定义电子邮件的S/MIME内容类型?

C# 能否明确定义电子邮件的S/MIME内容类型?,c#,email,mime-types,smime,rebex,C#,Email,Mime Types,Smime,Rebex,收件人希望收到带有附件的签名和加密邮件。 在他们的规范中,在电子邮件附件部分,他们声明“MIME部分的内容类型必须是应用程序/八位字节流”。 我们的附件是所需的内容类型。仅签名邮件包含不同的内容类型,但它们似乎不会造成任何问题,因为在发送仅签名邮件时,收件人能够解析我们的邮件并发送确认。 加密消息时,生成的内容类型为内容类型:application/pkcs7 mime 联系收件人后,他们能够向我们提供其自动系统的错误消息,内容为:未知电子邮件内容类型:application/pkcs7 mim

收件人希望收到带有附件的签名和加密邮件。
在他们的规范中,在电子邮件附件部分,他们声明“MIME部分的内容类型必须是应用程序/八位字节流”。
我们的附件是所需的内容类型。仅签名邮件包含不同的内容类型,但它们似乎不会造成任何问题,因为在发送仅签名邮件时,收件人能够解析我们的邮件并发送确认。
加密消息时,生成的内容类型为
内容类型:application/pkcs7 mime
联系收件人后,他们能够向我们提供其自动系统的错误消息,内容为:
未知电子邮件内容类型:application/pkcs7 mime

他们的错误消息让我相信,除了附件类型之外,电子邮件内容类型也必须是八位字节流。

我将C#与Rebex一起使用是否可以强制特定的内容类型?

使用Rebex API可以强制特定的内容类型(至少在本例中是这样),但您必须使用低级MIME API。因此,如果您当前正在使用
MailMessage
类,则可以使用以下方法:

using Rebex.Mail;
using Rebex.Mime;
using Rebex.Mime.Headers;
...


var message = new MailMessage();
...
message.Sign(...);
message.Encrypt(...);

MimeMessage mime = message.ToMimeMessage();
mime.ContentType = new ContentType(MediaTypeNames.Application.Octet);
mime.Save("message.eml");

但是,请注意,这将导致邮件看起来只包含二进制数据,并且很可能不会被常见邮件软件和库(包括Rebex Secure mail)识别为S/MIME邮件。

谢谢您的回答。在这一点上,我已经达到并似乎是对其规范最合乎逻辑的解释。将邮件客户端中的二进制文件视为附件让我感到困惑,让我觉得自己做错了什么。