Я использую EWS для доступа к серверу Exchange 2013 и сбора электронной почты из папки входящих сообщений на этом сервере.Мне нужно иметь возможность анализировать электронные письма, полученные в этом ящике, которые будут включать как зашифрованные, так и незашифрованные электронные письма.У меня есть файл .pfx для расшифровки зашифрованных писем, но я не уверен в правильном способе шифрования этих писем и не нашел хороших статей в Google на данный момент.Кто-нибудь может помочь?
Ниже приведен пример кода, который я использую (обратите внимание, что это после прочтения большого количества статей, поэтому некоторые вещи могут работать не так, как я думаю).
var exchangeEmailHelper = new ExchangeEmailHelper();
List<EmailMessage> = exchangeEmailHelper.getEmails();
foreach (var email in emails)
{
string[] retValue = null;
string[] mimeLines = Encoding.UTF8.GetString(email.MimeContent.Content).Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("mimeLines has been read");
//find out where the encoded message starts
int ln;
for (ln = 0; ln < mimeLines.Length; ln++)
{
if (mimeLines[ln] == "MIME-Version: 1.0") break;
}
Console.WriteLine($"There are {ln} lines until you get to the mime version.");
StringBuilder sb = new StringBuilder(email.MimeContent.Content.Length);
for (int sb1 = ln + 1; sb1 < mimeLines.Length; sb1++)
{
sb.Append(mimeLines[sb1]);
}
var y = Encoding.ASCII.GetBytes(sb.ToString());
string test1 = Regex.Replace(email.MimeContent.ToString(), @"\t|\n|\r", "");
test1 = test1.Substring(test1.IndexOf("Content-Transfer-Encoding: base64") + 33);
var bytearray = Encoding.ASCII.GetBytes(test1);
var collection = new X509Certificate2Collection();
collection.Import(ConfigurationManager.AppSettings["certLocation"], ConfigurationManager.AppSettings["certPassword"], X509KeyStorageFlags.PersistKeySet);
var certificate = collection[0];
var privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
var data = privateKey.Decrypt(bytearray, false);