Чтение электронной почты Outlook в HTML не очень красиво и в основном «бесполезно» в моем сценарии. В настоящее время я создаю систему поддержки, в которой пользователи должны иметь возможность создавать новые заявки и комментировать заявки через. электронное письмо.
100% уверенность в том, что будет использоваться только Outlook.
Вот мой подход на данный момент:
Подписка и чтение электронной почты
private static void OnEvent(object sender, NotificationEventArgs args)
{
// Streaming subscription to EWS
var subscription = args.Subscription;
// Loop through notifications
foreach(var notification in args.Events)
{
// If this is a news mail
if(notification.EventType = EventType.NewMail)
{
var item = (ItemEvent)notification;
// Define what properties to load
var props new PropertySet(BasePropertySet.IdOnly,
EmailMessageSchema.UniqueBody,
EmailMessageSchema.From,
EmailMessageSchema.Subject,
/* ECT */);
// We need the body to be in HTML
props.RequestedBodyType = BodyType.HTML;
// Bind the message
var message = EmailMessage.Bind(subscription.Service, item.ItemId, props);
// Handle the message with custom made handler
Handlers.ReadEmailAndPerformAction(message);
}
}
}
Обработчик сообщений
public static void ReadEmailAndPerformAction(EmailMessage message)
{
var from = message.From.Address;
var subject = message.Subject;
var body = message.UniqueBody.Text;
// BIND OTHER PROPERTIES
if(isReply)
CommentOnTicketFromEmail(/* Needed arguments */);
else
CreateNewTicketFromEmail(/* Needed arguments */);
}
ПРОБЛЕМА
Когда я получаю и читаю содержимое электронной почты в формате HTML, это выглядит довольно странно. Это просто Outlook, полная слава, раздражающая всех прохожих разработчиков, а HTML в некоторой степени бесполезен. Я бы хотел прочитать и вставить в свою базу данных простой и базовый HTML, но я получаю не это.
Вот пример HTML-содержимого из очень простого письма:
<html>
<body>
<div>
<div>
<span lang="da">
<div>
<div style="margin:0;">
<font face="Calibri,sans-serif" size="2">
<span style="font-size:11pt;">Test content</span>
</font>
</div>
</div>
</span>
</div>
</div>
</body>
</html>
Для моей системы это просто тарабарщина. Я просто не могу понять, почему ввод - это не абзац и так далее. Тем не менее, конечно, именно так Outlook решил предоставить мне контент.
Как бы то ни было, я бы хотел преобразовать этот пример в простую строку HTML, например:
<p>Test content</p>
Самым простым для меня было бы просто прочитать содержимое как простой текст, но это испортит списки, изображения и т. Д., И я хочу сохранять списки и встроенные изображения.
XDocument
раньше - person Detilium   schedule 13.03.2017