Я использую код из этой ссылки для получения заголовков электронной почты из Outlook.
Но это неправильно извлекает тело электронной почты (тип содержимого). Все работает нормально. Если вы хотите сравнить, вы можете открыть gmail, посмотреть параметры gmail и нажать «показать оригинал», который правильно отображает заголовки.
Предоставление кода по ссылке выше:
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.Office.Interop.Outlook;
public static class MailItemExtensions
{
private const string HeaderRegex =
@"^(?<header_key>[-A-Za-z0-9]+)(?<seperator>:[ \t]*)" +
"(?<header_value>([^\r\n]|\r\n[ \t]+)*)(?<terminator>\r\n)";
private const string TransportMessageHeadersSchema =
"http://schemas.microsoft.com/mapi/proptag/0x007D001E";
public static string[] Headers(this MailItem mailItem, string name)
{
var headers = mailItem.HeaderLookup();
if (headers.Contains(name))
return headers[name].ToArray();
return new string[0];
}
public static ILookup<string, string> HeaderLookup(this MailItem mailItem)
{
var headerString = mailItem.HeaderString();
var headerMatches = Regex.Matches
(headerString, HeaderRegex, RegexOptions.Multiline).Cast<Match>();
return headerMatches.ToLookup(
h => h.Groups["header_key"].Value,
h => h.Groups["header_value"].Value);
}
public static string HeaderString(this MailItem mailItem)
{
return (string)mailItem.PropertyAccessor
.GetProperty(TransportMessageHeadersSchema);
}
}
Выход:
MIME-Version: 1.0
Received: by someip with HTTP; Wed, 3 Dec 2014 10:04:00 -0800 (PST)
Date: Wed, 3 Dec 2014 23:34:00 +0530
Delivered-To: [email protected]
Message-ID: <[email protected]>
Subject: <subject here>
From: test name <test @gmail.com>
To: test name <test @gmail.com>
Content-Type: multipart/alternative; boundary=<somehash...>
Вывод из gmail (нажмите «показать оригинал» в параметрах сообщения gmail):
MIME-Version: 1.0
Received: by someiphere with HTTP; Wed, 3 Dec 2014 10:04:00 -0800 (PST)
Date: Wed, 3 Dec 2014 23:34:00 +0530
Delivered-To: [email protected]
Message-ID: <[email protected]>
Subject: subjecthere
From: test name <[email protected]>
To: test name <[email protected]>
Content-Type: multipart/alternative; boundary=somehash
--somehash
Content-Type: text/plain; charset=UTF-8
messagehere
--somehash
Content-Type: text/html; charset=UTF-8
<div dir="ltr">messagehere</div>
--somehash--