Некоторые рекомендации и соображения:
Адресный вопрос. Лучше всего использовать расширение «+» в адресе электронной почты (myaddr**+custom**@gmail.com). Это облегчает маршрутизацию, но, прежде всего, легче отслеживать маршрутизацию адресов в вашей системе. Другие техники могут использовать токен в теме
Спам : выполнять обработку спама вне приложения и использовать фильтр приложения на основе заголовка.
Очередь неудачных сообщений : По большей части нет. Стандартное поведение электронной почты - попытка доставки сообщения до 3 дней. Для почтового сервера приложения все, что он делает, это создает гигантские почтовые файлы, которые вы, скорее всего, никогда не обработаете. Сообщения в очереди, только если причины сбоя находятся вне вашего контроля (например, сервер не работает).
Неправильная обработка сообщения : Существует несколько способов, которыми сообщение может быть недействительным. Некоторые из них являются ограничениями библиотеки (она не может анализировать адрес, даже если она действительна в RFC). Другие из-за сломанных клиентов (например, пропуская кавычки вокруг определенных заголовков). Другие могут быть слишком большими или использовать неизвестную кодировку, не иметь критических заголовков, иметь несколько значений, где должно быть только одно, нарушать некоторую семантику, специфичную для вашего приложения, и т. Д., И т. Д. И т. Д. В основном, где бы ни был почтовый API Java может выдать исключение - это случай обработки ошибки, который вы должны определить, как правильно обрабатывать.
Ответы об ошибках : Не каждая ошибка заслуживает ответа. Некоторые из них генерируются из-за спама, и вам следует избегать отправки сообщений обратно на эти адреса. Другие из автоматизированных систем (вы сами, респондент, другой почтовой системой и т. Д.), И если вы ответите, вам будет отправлено другое сообщение, повторяющее цикл.
Хаки для конкретного клиента : как и выше, у каждого клиента есть небольшие отличия, которые усложнят ваш код. Помните об этом каждый раз, когда вы пересекаете структуру сообщения.
Отправители, ответы и циклы : В зависимости от вашей ситуации вы можете получать почту из следующих источников:
- Реальные люди, возможно из внешних источников
- Списки рассылки
- Вы или один из ваших собственных адресов получателей
- Другие почтовые серверы (отказы, сбои и т. Д.)
- Сущность в другой системе (my-ldap-group@company.com, системный монитор @ localhost)
- Автоматизированная система
- псевдоним одного из перечисленных выше
- псевдоним псевдониму
Теперь ваш первый инстинкт, вероятно, «принимайте почту только из правильных источников!», Но это вызовет у вас множество головных болей, потому что люди будут отправлять самые ужасные вещи на почтовый сервер приложения. Я считаю, что лучше принять все и явно отрицать исключения.
Отладка : Сохраните копию заголовков любого полученного сообщения. Это очень поможет в любой момент, когда у вас возникнут проблемы.
- Изменить -
Я купил книгу «Создание масштабируемых веб-сайтов», упомянутую rossfabricant. У него есть хороший раздел электронной почты. Имеется несколько важных моментов, касающихся обработки электронной почты от операторов беспроводной связи и проверки подлинности электронной почты.