Отправить сообщение и проверить статус
Используя почту Java, я хотел бы отправить электронное письмо и проверить статус. Возможные статусы:
- Hard-bounce: не найден почтовый сервер
- Soft-bounce: обнаружен почтовый сервер, но учетная запись не найдена
- Успех
Возможно ли отправить электронное письмо и получить обратную связь о попытке доставки в том виде, как я описал выше?
РЕДАКТИРОВАТЬ: Респондент предложил искать библиотеку Java, которая обеспечивает ту же функциональность, что ListNanny. Я искал вокруг, но ничего не нашел. Любая идея, существует ли такая библиотека?
Cheers,
Дон
Ответы
Ответ 1
Вы не можете сделать это надежно или последовательно. Что произойдет, если ваш локальный почтовый сервер переведет его на корпоративный исходящий почтовый сервер, а затем он отскакивает, когда этот сервер пытается его передать? Что произойдет, если почтовый сервер не сможет разговаривать с другим почтовым сервером, а затем сообщение истекает через 4 дня?
Ответ 2
Если вы отправляете HTML-адрес электронной почты, вы можете захотеть вставить прозрачное изображение размером 1 пиксель в электронном письме. URL изображения будет ссылаться на сервлет, который возвращает изображение. URL-адрес также будет иметь какой-то идентификатор сообщения в качестве параметра.
Идея заключается в том, что когда пользователь читает сообщение, он отображает изображение, которое запускает ваш сервлет, который пишет в db, что сообщение было прочитано.
Ответ 3
Что вам нужно сделать, это установить отправителя SMTP конверта на адрес, который вы контролируете для сообщений NDR. Вы должны разобрать электронные письма по мере их поступления и выяснить, что пошло не так. Это обычно делается для списков рассылки, и для обработки сообщений используются такие продукты, как ListNanny (это продукт .NET, m уверен, что есть эквивалент Java, или вы можете написать его сами).
Конверт "из" отличается от адреса сообщения "от". Это часть сеанса SMTP, который происходит между вашим кодом и вашим MTA. Все NDR будут отправлены на этот адрес.
Ответ 4
Поиск почтового сервера и подключение: легко. Проверка учетной записи: возможно. Но это зависит от того, получаете ли вы в первую очередь доступ к почтовому серверу. Он может отклонить попытки подключения (например, поскольку ваша сеть занесена в черный список)
Самое сложное, что вы называете "успехом":
Короткий ответ: Нет.
Длинный ответ: теоретически это было бы возможно, но вам придется ждать несколько часов, если не дней, чтобы узнать статус. С graylisting, whitelisting, спам-блокируя почтовые серверы, многие будут принимать только электронное письмо после нескольких попыток доставки. Вы узнаете только о успешности доставки, когда они наконец доставят или сдадут почту. И в зависимости от загрузки почтового сервера отправка электронной почты может быть отложена на какое-то время.
Ответ 5
Я не являюсь специалистом специально с Javamail, но я бы сказал это: даже "успех" может быть неудачным.
Определение жестких и мягких отказов должно быть достаточно простым для проверки. Если вам трудно найти сервер, если вы подключаетесь, и сервер говорит, что "почтовый ящик не найден", он "мягкий". Но что, если сервер принимает сообщение, а затем отскакивает его позже? Многие интерфейсные серверы принимают неизвестные сообщения либо по дизайну, либо по необходимости (переднее реле для "реальных" серверных серверов), и если позднее сообщение будет адресовано неверному адресу, сообщение возвращается обратно отправителю. В этом случае вы сообщаете об успешном отправке, когда это действительно не удастся.
Обеспечение доставки практически невозможно без каких-либо "щелчков здесь", встроенных в сообщение.
Ответ 6
Не полагайтесь на то, что вы возвращаете (если вы вернетесь) информацию с сервера.
Многие почтовые серверы теперь настроены на не, указывают, существует ли получатель или нет, из-за созданного отверстия безопасности. (например, если данный домен сообщает ( "да" / "нет" ) для существования адреса электронной почты, хакер просто развяжет атаку словаря на сервере, чтобы определить всех действительных пользователей, и, таким образом, они получают мгновенный спам список.
Ответ 7
Вы можете использовать http://www.mailcounter.info бесплатный сервис, чтобы проверить, прочитано ли ваше письмо, а также как много раз он был прочитан пользователем. Это бесплатный сервис.
Ответ 8
то, что вам нужно сделать, это проверить MX-запись электронной почты получателя (запрос DNS MX домена домена адреса электронной почты) и отправить сообщение через разрешенный SMTP-сервер.
таким образом, если запись MX не найдена, вы получаете "Hard Bounce", если она найдена, но метод отправки генерирует исключение, вы получаете "Мягкий отскок", и если он пройдет, вы получите "Успех".
вы можете использовать проект dnsjava для разрешения записи MX.
http://www.dnsjava.org/
Ответ 9
Эта ссылка может помочь вам. Это в экспериментальном файле jar, который использует RFC 3642 и RFC 3464. Он имеет некоторые базовые классы, которые позволяют получить статус доставки почты. А также вам понадобится файл Javamail.