问题描述
收件人希望签名并经过加密的邮件带有附件。
在其规范中,在电子邮件附件部分下,它们声明“ MIME部分的内容类型必须是Application / octet-stream”。
我们的附件是必需的内容类型。仅签名的消息包含不同的内容类型,但是它们似乎不会造成任何麻烦,因为在发送仅签名的消息时,收件人可以解析我们的消息并发送确认。
加密邮件时,得到的Content-Type为Content-Type: application/pkcs7-mime;
。
与收件人联系后,他们能够向我们提供其自动化系统的错误消息,内容为:UnkNown Email-ContentType: application/pkcs7-mime
他们的错误消息使我相信,除了附件类型以外,电子邮件内容类型也必须具有八位字节流。
我在Rebex上使用C#是否可以强制使用特定的内容类型?
解决方法
可以使用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消息。
>