2010-06-30 3 views
3

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

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

ответ

0

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

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

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

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

0

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

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

В нем есть движок анализатора и файл определения и может помочь с некоторыми дополнительными типами NDR, такими как Hard и Soft Bounces, ChallengeVerification, электронные письма DnsError и т. Д.

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

Надеются, что это помогает

EDIT:

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

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

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

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

+0

Я надеялся не использовать сторонний компонент для этого усилия. Приобретение стороннего инструмента просто для проверки того, является ли сообщение автоматическим ответом, кажется ненужным. –

+0

понятный. – Riaan

2

Посмотрите на наличие заголовка:

X-Auto-Response-Suppress 

Это флаг обмен добавляет автоматизированы сообщения, чтобы предотвратить их от запуска других автоматических сообщений. Это звучит как ваш прецедент. Есть specific flags that can be set, но в моем случае я просто не отправлял ответы независимо от того, какие флаги были установлены.

Смежные вопросы