Другое событие 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));
}
Вы не можете сделать этого надежно или последовательно. Что происходит, если Ваш сервер местной почты передает его на корпоративный сервер исходящей почты, и затем это возвращается, когда тот сервер пытается передать его? Что происходит, если почтовый сервер не может говорить с другим почтовым сервером, и затем сообщение испытывает таймаут после 4 дней?
Если Вы посылаете электронное письмо HTML, Вы могли бы хотеть встроить прозрачное изображение на 1 пиксель в электронную почту. URL изображения на самом деле сослался бы на сервлет, который возвращает изображение. URL также имел бы своего рода идентификатор сообщения в качестве параметра. Идея позади этого состоит в том, что, когда пользователь читает сообщение, он отображает изображение, которое инициировало Ваш сервлет, который пишет в дб, что сообщение было прочитано.
Нахождение почтового сервера и соединение: легкий. Проверка учетную запись: возможный. Но это зависит от того, получаете ли Вы доступ к почтовому серверу во-первых. Это может уменьшить Ваши попытки подключения (например, потому что Ваша сеть помещена в черный список)
, самая сложная вещь - то, что Вы называете "успехом":
Короткий ответ: Нет.
ответ Long: Теоретически это было бы возможно, но необходимо будет ожидать в течение многих часов если не дни для знания состояния. С graylisting, белым списком, блокирующие спам почтовые серверы многие только примут электронное письмо после нескольких попыток доставки. Вы будете только знать об успехе доставки, когда они наконец поставят или разочаруются в почте. И в зависимости от почтового сервера загружаются, отправка электронного письма может быть отложена для произвольного количества времени.
То, что необходимо сделать, установлено конверт отправитель SMTP на адрес, который Вы контролируете для сообщений NDR. Необходимо проанализировать электронные письма, поскольку они входят и выясняют то, что пошло не так, как надо. Это обычно делается для списков рассылки и продуктов как , ListNanny используется для обработки сообщений (это - продукт.NET, но я уверен, что существует эквивалентный Java, или Вы могли записать это сами).
конверт "от" отличается, чем сообщение "от" адреса. Это - часть разговора SMTP, который происходит между Вашим кодом и Вашим MTA. Весь NDRs будет отправлен в тот адрес.
Не полагайтесь на то, что Вы возвращаете (если Вы возвращаетесь), информация с сервера.
Много почтовых серверов теперь установлены [до 112] не указывают, существует ли receipient или нет, должный дыра в системе безопасности, которую он создает. (например, если бы данный домен сообщает ("да" / "нет") для существования адреса электронной почты, хакер просто развязал бы атаку с подбором по словарю на сервере для определения всех действительных пользователей, и таким образом они получают мгновенный список спама.
Я не famliar конкретно w/Javamail, но я сказал бы это: Даже "успех" не может быть успехом.
Вы - определение твердых и мягких отказов, должно быть достаточно просто проверить. Если Вы не можете найти сервер, трудно, если Вы, connet и сервер говорят "почтовый ящик, не найденный", это "мягко". Но что, если сервер принимает сообщение и затем возвращает его позже? Много серверов фронтенда принимают неизвестные сообщения, или дизайном или необходимостью (реле фронтэнда для "реальных" серверов бэкэнда) и если сообщение, как позже находят, адресовано недопустимому адресу, сообщение приходится в норму к отправителю. В этом случае Вы сообщите об "успехе" в отправке, когда это будет действительно не успешно.
Удостоверяющаяся доставка почти невозможна w/out своего рода "щелкала здесь" встроенная в сообщение.
Можно использовать http://www.mailcounter.info бесплатный сервис проверить, была ли электронная почта прочитана, а также сколько раз это было считано t он пользователь. Это - бесплатный сервис.
вам следует фактически проверить запись MX электронной почты получателя (запрос DNS MX доменной части адреса электронной почты) и отправить сообщение через SMTP-сервер, который будет разрешен.
таким образом, если запись MX не найдена, вы получите «Hard Bounce», если она будет найдена, но метод send выдает исключение, вы получите «Soft Bounce», и если она пройдет - вы получите успех".
вы можете использовать проект dnsjava для разрешения записи MX. http://www.dnsjava.org/