пошлите электронное письмо и проверьте состояние

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

16
задан Kdeveloper 23 March 2011 в 13:26
поделиться

8 ответов

Вы не можете сделать этого надежно или последовательно. Что происходит, если Ваш сервер местной почты передает его на корпоративный сервер исходящей почты, и затем это возвращается, когда тот сервер пытается передать его? Что происходит, если почтовый сервер не может говорить с другим почтовым сервером, и затем сообщение испытывает таймаут после 4 дней?

5
ответ дан 30 November 2019 в 22:37
поделиться

Если Вы посылаете электронное письмо HTML, Вы могли бы хотеть встроить прозрачное изображение на 1 пиксель в электронную почту. URL изображения на самом деле сослался бы на сервлет, который возвращает изображение. URL также имел бы своего рода идентификатор сообщения в качестве параметра. Идея позади этого состоит в том, что, когда пользователь читает сообщение, он отображает изображение, которое инициировало Ваш сервлет, который пишет в дб, что сообщение было прочитано.

4
ответ дан 30 November 2019 в 22:37
поделиться

Нахождение почтового сервера и соединение: легкий. Проверка учетную запись: возможный. Но это зависит от того, получаете ли Вы доступ к почтовому серверу во-первых. Это может уменьшить Ваши попытки подключения (например, потому что Ваша сеть помещена в черный список)

, самая сложная вещь - то, что Вы называете "успехом":

Короткий ответ: Нет.

ответ Long: Теоретически это было бы возможно, но необходимо будет ожидать в течение многих часов если не дни для знания состояния. С graylisting, белым списком, блокирующие спам почтовые серверы многие только примут электронное письмо после нескольких попыток доставки. Вы будете только знать об успехе доставки, когда они наконец поставят или разочаруются в почте. И в зависимости от почтового сервера загружаются, отправка электронного письма может быть отложена для произвольного количества времени.

1
ответ дан 30 November 2019 в 22:37
поделиться

То, что необходимо сделать, установлено конверт отправитель SMTP на адрес, который Вы контролируете для сообщений NDR. Необходимо проанализировать электронные письма, поскольку они входят и выясняют то, что пошло не так, как надо. Это обычно делается для списков рассылки и продуктов как , ListNanny используется для обработки сообщений (это - продукт.NET, но я уверен, что существует эквивалентный Java, или Вы могли записать это сами).

конверт "от" отличается, чем сообщение "от" адреса. Это - часть разговора SMTP, который происходит между Вашим кодом и Вашим MTA. Весь NDRs будет отправлен в тот адрес.

3
ответ дан 30 November 2019 в 22:37
поделиться

Не полагайтесь на то, что Вы возвращаете (если Вы возвращаетесь), информация с сервера.

Много почтовых серверов теперь установлены [до 112] не указывают, существует ли receipient или нет, должный дыра в системе безопасности, которую он создает. (например, если бы данный домен сообщает ("да" / "нет") для существования адреса электронной почты, хакер просто развязал бы атаку с подбором по словарю на сервере для определения всех действительных пользователей, и таким образом они получают мгновенный список спама.

1
ответ дан 30 November 2019 в 22:37
поделиться

Я не famliar конкретно w/Javamail, но я сказал бы это: Даже "успех" не может быть успехом.

Вы - определение твердых и мягких отказов, должно быть достаточно просто проверить. Если Вы не можете найти сервер, трудно, если Вы, connet и сервер говорят "почтовый ящик, не найденный", это "мягко". Но что, если сервер принимает сообщение и затем возвращает его позже? Много серверов фронтенда принимают неизвестные сообщения, или дизайном или необходимостью (реле фронтэнда для "реальных" серверов бэкэнда) и если сообщение, как позже находят, адресовано недопустимому адресу, сообщение приходится в норму к отправителю. В этом случае Вы сообщите об "успехе" в отправке, когда это будет действительно не успешно.

Удостоверяющаяся доставка почти невозможна w/out своего рода "щелкала здесь" встроенная в сообщение.

1
ответ дан 30 November 2019 в 22:37
поделиться

Можно использовать http://www.mailcounter.info бесплатный сервис проверить, была ли электронная почта прочитана, а также сколько раз это было считано t он пользователь. Это - бесплатный сервис.

1
ответ дан 30 November 2019 в 22:37
поделиться

вам следует фактически проверить запись MX электронной почты получателя (запрос DNS MX доменной части адреса электронной почты) и отправить сообщение через SMTP-сервер, который будет разрешен.

таким образом, если запись MX не найдена, вы получите «Hard Bounce», если она будет найдена, но метод send выдает исключение, вы получите «Soft Bounce», и если она пройдет - вы получите успех".

вы можете использовать проект dnsjava для разрешения записи MX. http://www.dnsjava.org/

1
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: