我想使用C#向Exchange WEb服务发送加密的电子邮件消息。
有可能吗?
谢谢
编辑:
我的邮件正文加密器:
public static byte[] encry(string body, ContentTyp typ, string to )
{
X509Certificate2 cert = GetMailCertificate(to);
StringBuilder msg = new StringBuilder();
msg.AppendLine(string.Format("Content-Type: text/{0}; charset=\"iso-8859-1\"", typ.ToString()));
msg.AppendLine("Content-Transfer-Encoding: 7bit");
msg.AppendLine();
msg.AppendLine(body);
EnvelopedCms envelope = new EnvelopedCms(new ContentInfo(Encoding.UTF8.GetBytes(msg.ToString())));
CmsRecipient recipient = new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, cert);
envelope.Encrypt(recipient);
//System.IO.MemoryStream ms = new System.IO.MemoryStream(envelope.Encode());
return envelope.Encode();
}
主
byte [] con = encrypted.encry("test", encrypted.ContentTyp.plain, "test@server.com");
EmailMessage msg1 = new EmailMessage(_server);
msg1.MimeContent = new MimeContent("UTF-8", con);
msg1.ToRecipients.Add("user@server.com");
msg1.InternetMessageHeaders = ??
msg1.Send();
答案 0 :(得分:0)
如果您指的是S / Mime加密,则必须根据RFC 3852和RFC 4134创建加密邮件。完成后,您可以发送消息。
使用EWS托管API,可以按照以下方式完成:
var item = new EmailMessage(service);
item.MimeContent = new MimeContent(Encoding.ASCII.HeaderName, content);
// Set recipient infos, etc.
item.Send();
编辑: 您应该添加标准标题,如From,To,Date,Subject等。以及内容类型。
Subject: Test
From: "sender" <sender@yourcompany.com>
To: "recipient" <recipient@othercompany.com>
Content-Type: application/pkcs7-mime; smime-type=signed-data; name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m
Your encrypted body goes here
只需使用StringWriter将所有这些放在一起。结果就是你的MIME主体。