Что необходимо для добавления возможностей электронной почты в веб-приложение? - PullRequest
2 голосов
/ 29 июля 2010

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

  1. Отправлять электронные письма, подтверждающие регистрацию
  2. Разрешить пользователям отправлять электронных писем друг другу, используя домен моего приложеният.е. dan@my-app.com

Из моих исследований мне кажется, что мне понадобится агент передачи почты (MTA), такой как Postfix, и, возможно, сервер IMAP, такой как Courier;но я не понимаю, нужен ли сервер IMAP.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 29 июля 2010

Вам нужен код внутри вашего веб-приложения, чтобы создать и отправить электронное письмо в мир SMTP. Обычно для этого используется JavaMail, и вы можете либо включить его в свое веб-приложение, либо (предпочтительно), чтобы веб-контейнер предоставлял правильно сконфигурированный экземпляр через JNDI. Это зависит от поставщика.

Если у вас нет SMTP-сервера для подключения к JavaMail (часто это магазины Exchange для Windows), вы можете либо запустить его (обратитесь к своему ИТ-администратору), либо использовать Google Mail или Hotmail, либо другие, если это так. нормально, чтобы ваше веб-приложение отправляло почту через них. Немного сложно использовать GMail в качестве SMTP-сервера, но при правильной настройке работает очень хорошо.

Вам понадобится SMTP-сервер, так как он обрабатывает все скучные подробности, касающиеся записей MX и повторной отправки, если SMTP-сервер делает грейлистинг и т. Д. И т. Д.

О, и IMAP предназначен для получения доставленной почты, а не отправки почты. Вам это не нужно.

1 голос
/ 29 июля 2010

Если это веб-приложение на Java, то серверная часть является сервлетом. При получении сообщения электронной почты, отправленного с клиентской формы, ваш сервер должен отправить этот текст в виде электронного письма.

В стеке Java EE есть код для этого, или вы можете специально загрузить JavaMail . Это позволит вашим программам выступать в роли почтовых клиентов.

Ваш MTA получает сообщения от вашего сервлета и отправляет их пользователям. Пока все хорошо.

Но вам также необходим почтовый ящик, т. Е. Эквивалент почтового ящика для ваших пользователей. Postfix, QMail и другие предлагают базовую «плоскую» модель почтового ящика, в которой почта просто сохраняется до тех пор, пока клиент не заберет ее, а затем (как правило) удалит. Доступ через POP3. IMAP предлагает гораздо больше организационных возможностей, то есть возможность задавать иерархии вложенных почтовых ящиков, передавать почту между ними и так далее. Вы, вероятно, не захотите создавать GUI-интерфейс со всей этой сложностью, поэтому я предполагаю, что вам действительно не нужен сервер IMAP. Однако вы хотите, чтобы относительно простой POP3-сервер позволял вашему сервлету получать доступ к почтовым ящикам через TCP / IP. Обычно это часть «стандартных» пакетов почтового сервера.

Чтобы ваш собственный домен был известен всему миру, вам необходим доступ к MX-записям вашей службы DNS, т. Е. Вы должны настроить один или два хоста на интернет-адрес в качестве почтового отделения. .

Наконец, если вы хотите избавить себя от многих проблем, будьте очень внимательны при настройке своего MTA (SMTP-сервера) таким образом, чтобы не было возможности использовать его в качестве открытого реле. т.е. ваши пользователи не должны иметь возможности отправлять почту во внешний мир в целом (или хакеры найдут способ злоупотребить вашим веб-интерфейсом для этого), а почта из Интернета не должна доходить до вашего пользователи. Самое главное, чтобы не было возможности пересылать почту из Интернета куда-либо еще в Интернете. Найдите открытую службу тестирования ретрансляции (они бесплатны) в сети и попросите ее запустить тест вашей конфигурации, как только вы решите, что все готово.

EDIT:

Глядя на ответ Торбьерна, я понял, что вы, вероятно, не хотите, чтобы ваши пользователи получали почту через ваше приложение; у них, вероятно, уже есть провайдеры электронной почты и собственные учетные записи. В этом случае вам не нужно беспокоиться о возможностях входящей почты или POP3-сервера. Вы могли бы рассмотреть возможность предоставления полных услуг электронной почты на вашем домене, но это очень неблагодарная работа, и если у вас есть выбор, оставьте эту грязную работу GMail, Yahoo, Hotmail и им подобным. Независимо от того, какую услугу вы предоставляете, вашим клиентам никогда не будет достаточно, и вы будете ежедневно бороться со спамом и другими преступлениями.

0 голосов
/ 29 июля 2010

Для начала ваш сервер должен иметь почтовые возможности.В Linux земля sendmail обычно такова.

Дополнительно, проверьте javaMail.

http://www.oracle.com/technetwork/java/index-jsp-139225.html

...