Как определить, является ли почтовый элемент Exchange автоматическим ответом? - PullRequest
3 голосов
/ 30 июня 2010

У меня есть приложение .NET, которое опрашивает почтовый ящик Exchange на наличие новых сообщений по расписанию.Дальнейшая обработка происходит при обнаружении новых сообщений в почтовом ящике электронной почты.Я столкнулся с проблемой обработки при получении сообщений автоответчика в почтовый ящик [например, правило автоответа или сообщения об отсутствии на работе].

Мне нужно решение на C #, чтобы определить, является ли почтовый элемент Exchange автоматическим ответом.Есть ли в почтовом элементе атрибут, который указывает, является ли сообщение автоответчиком?

Ответы [ 4 ]

2 голосов
/ 17 июня 2015

Поищите наличие заголовка:

X-Auto-Response-Suppress

Это флаг, который Exchange добавляет к автоматизированным сообщениям, чтобы они не запускали другие автоматические сообщения. Это звучит как ваш конкретный вариант использования. Есть специальные флаги, которые можно установить , но в моем случае я просто не отправлял ответы независимо от того, какие флаги были установлены.

0 голосов
/ 10 декабря 2018

Кажется, что если вы используете управляемый API Exchange EWS, вы можете проверить ItemClass в Exchange "item". Это указывает, является ли это Задача, Событие, Документ, Электронная почта и т. Д.

Это также указывает, является ли это OofTemplate или NDR (отскок). Некоторые из классов перечислены здесь:

https://docs.microsoft.com/en-us/office/vba/outlook/Concepts/Forms/item-types-and-message-classes

Итак, основная идея - проверить ...

if(item.ItemClass != "IPM.Note")

... тогда это не электронная почта и / или автоответ

0 голосов
/ 14 сентября 2010

Поработав некоторое время с этой проблемой, я решил просто использовать самый простой подход.

Используя веб-службу Exchange (exchange.asmx), доступную для Exchange 2007, я решил просто проверить строку темы каждого почтового элемента, чтобы убедиться, что он содержит «Нет на месте», прежде чем продолжить обработкулогика.Все сообщения, с которыми я имел дело, были сообщениями с автоматическим ответом, которые содержали строку темы «Вне офиса».

Я уверен, что я столкнусь с дополнительными случаями использования автоответчиков, у которых нет «Нет на месте», которые мне придется учитывать в будущем.В то же время я либо модифицирую код, чтобы проверить строку темы по массиву возможных строк темы, либо продолжу поиск какого-либо дополнительного атрибута в элементе почты, который указывает сообщение автоответчика.

Я почти уверен, что дополнительным атрибутом является значение "Return-Path:" в заголовке почтового элемента, но я не нашел простого способа получить этот атрибут.Из того, что я могу сказать, если «Return-Path» имеет значение «<>», это сообщение с автоматическим ответом, в противном случае у него будет действительный адрес электронной почты.

0 голосов
/ 30 июня 2010

Информация об автоответчике является частью заголовка, а иногда и темы, и тела.Все зависит от сервера, который сделал автоответчик.

Я лично использую сторонний компонент для помощи в разборе электронных писем.Он называется ListNanny .

Он имеет механизм синтаксического анализа и файл определения и может помочь с некоторыми дополнительными типами отчетов о недоставке, такими как жесткие и мягкие отскоки, проверка вызовов, электронные письма DnsError и другие.

Если я получу обратно «Неизвестный» тип с помощью ListNanny, то я предполагаю, что это правильный адрес электронной почты

Надеюсь, это поможет

РЕДАКТИРОВАТЬ:

Послекомментарий.Мое другое предложение было бы создать пару различных типов сообщений автоответчика.

Оттуда вы просматриваете заголовки писем вручную, находите все записи, которые могут указывать, что это сообщение автоответчика (которого нет в обычном сообщении), а затем записываете свой собственный анализатор электронной почты, еслиэлектронная почта содержит любую из этих «подписей» автоответчика, а затем помечает ее как таковую.

Я могу только сказать вам, что когда вы начинаете, у вас, скорее всего, будет много ложных или положительных результатовЛожные электронные письма, но это станет лучше через некоторое время, и после того, как вы обработаете больше электронных писем и уточните свою подпись.

Извините, я не мог помочь вам с примерами кода или другими идеями,

...