Подключить входящую почту к script в Windows IIS SMTP?

У меня есть веб-приложение, работающее в Windows IIS. Это приложение имеет базу данных, в которой каждый элемент имеет уникальный ключ (1, 2, 3...) и список адресов электронной почты (между прочим).

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

[email protected]

Затем сервер получит электронное письмо и подключит его к script. script запросит базу данных для элемента 75, чтобы получить список адресов электронной почты, а затем повторно отправить электронное письмо.

Я мог бы сделать это легко в системе unix, используя sendmail, но я понятия не имею, может ли аналогичная настройка быть выполнена в системе Windows (или если это потребует дополнительного программного обеспечения).

Ответ 1

(Похоже, вы хотите реализовать такую ​​функцию, как craigslist).

Служба SMTP IIS может отправлять электронную почту, а также принимать электронную почту.

Вот что вы хотите сделать.

Настройте службу SMTP IIS для приема сообщений электронной почты для домена (это можно настроить в свойствах службы SMTP IIS под доменами). Скажите доменное имя "myserver.example.com"

Затем на вашем DNS-сервере настройте запись MX, которая указывает на "myserver.example.com".

Теперь, когда электронная почта отправляется на ваш SMTP-сервер IIS, она фактически будет помещена в вашу папку mailroot/drop (вы также можете изменить эту папку в свойствах службы SMTP IIS).

Теперь, когда вы принимаете электронную почту, следующим шагом будет написать script, который будет:

1) Разберите электронные письма.

2) Измените их соответствующим образом (вы просто хотите изменить адрес "на"?).

3) Если вы хотите повторно отправить электронные письма, вам необходимо соответствующим образом изменить их. Вам нужно будет добавить один заголовок X-Sender, который используется для идентификации адреса электронной почты, отправляющего электронное письмо, и заголовок X-Receiver для каждого получателя, который будет принимать электронную почту. Вот пример электронной почты, который был изменен:

X-Sender: [email protected]
X-Receiver: [email protected]
X-Receiver: [email protected]
From: "jim bob" <[email protected]>
To: <[email protected]>
Subject: test
MIME-Version: 1.0
Content-Type: text/plain;
Message-ID: <[email protected]>


test

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

Служба SMTP IIS придет, возьмет электронное письмо и включит его, отправив электронное письмо с помощью X-Sender в качестве адреса MAIL FROM и отправив его на каждый адрес электронной почты, указанный в каждом заголовке X-Receiver.

4) Запустите этот script как запланированную задачу. Другой вариант - создать его как службу Windows или реализовать что-то вроде файловой системы, где он выполняется каждый раз, когда электронное письмо создается как файл.

5) Еще один вариант для всего этого - фактически реализовать SMTP Event Sink, но я думаю, что это слишком много для того, что вы хотите сделать, и может создавать больше головных болей, чем это решает. Если бы мне нравилась боль, я бы пошел только по пути раковины событий.

Надеюсь, я не сделал это так ясно, как грязь.

Ответ 2

Событие Раковины не сложно! На самом деле, существует около дюжины примеров, написанных на VBS (который работает на Win-сервере с использованием WSH), который выполняет именно то, что вы хотите сделать. Приемник OnArrival запускается в режиме реального времени с использованием любой учетной записи пользователя компьютера без каких-либо угроз безопасности, поскольку сообщение является асинхронным и не сообщает об этом.

На самом деле это очень простая задача - одна из самых простых. После настройки он никогда не сломается. На одном сервере у меня работает более 9 лет, обрабатывая несколько тысяч входящих сообщений в день! Я создал около десятка из этих вещей - если вам понадобится больше двух часов, вы делаете это очень неправильно. Если бы это было проще, чем в UNIX, моя бабушка могла бы быть программистом UNIX, поэтому я бы не стал хвастаться, что это проще делать на сервере UNIX.

http://msdn.microsoft.com/en-us/library/ms528023.aspx

http://support.microsoft.com/kb/894286

http://msdn.microsoft.com/en-us/library/ms526206.aspx

http://msdn.microsoft.com/en-us/library/ms526620.aspx

Ответ 3

Вы можете читать по электронной почте через POP3 или IMAP с помощью script. Я также UNIXer, поэтому я изо всех сил пытаюсь понять, как что-то вроде этого так сложно, но у вас оно есть. Здесь, что я считаю, вы должны сделать.

  • Сделайте script на любом языке, который вам нравится. Пока он может читать POP3 или IMAP.

  • У Windows запустите script каждые 5 минут

  • Попросите script получить доступ к почтовому ящику и выполнить все необходимые ему электронные письма.

Мое личное предпочтение было бы установить Python, но если вы ограничены... я не знаю. ASPNET неплохо, но я никогда раньше не использовал его для грязных скриптов.

Ответ 4

Поток событий ооочень прост. Все, что вам нужно сделать, это написать миллион строк кода. Оооочень легко...