Вполне возможно, что люди, которые подписываются на вашу службу, вводят электронные письма с ошибками ввода, которые вы не исправляете. Например: chris@gmial.com -or- james@hotnail.com.
И такие домены сконфигурированы для использования в качестве spamtraps , которые автоматически помещают IP-адрес вашего почтового сервера и / или домен и повредить его репутации.
Чтобы избежать этого, выполните двойную проверку для адреса электронной почты, который вводится при подписке на продукт. Также отправьте электронное письмо с подтверждением, чтобы убедиться, что этот адрес электронной почты проверен на 100% человеком, который вводит письмо с подтверждением, прежде чем отправлять им ключ продукта или принять их подписку. Письмо с подтверждением должно требовать, чтобы получатель щелкнул ссылку или ответ, чтобы действительно подтвердить, что владельцем почтового ящика является человек, который зарегистрировался.
Вы используете метод getElementsByTagName
, который возвращает объект org.w3c.dom.NodeList
. В случае отсутствия элементов с данным именем NodeList.getLength
метод возвращает 0
. Итак, код ниже безопасно получает текстовое содержимое:
NodeList locations = document.getElementsByTagName("location");
if (locations.getLength() > 0) {
String textContent = locations.item(0).getTextContent();
System.out.println(textContent);
}
Или вы можете создать метод, который будет это делать:
public static String getFirstTextContent(Document node, String tagName) {
NodeList locations = node.getElementsByTagName(tagName);
if (locations.getLength() > 0) {
return locations.item(0).getTextContent();
}
return "";
}
и ваш код может выглядеть так: ]
В примере xml:
<deviceInfo>
<device>TV2345</device>
<deviceType>Television</deviceType>
<location />
<size />
</deviceInfo>
Нет тега deviceId
, но вы пытаетесь получить первый элемент из NodeList
:
eElement.getElementsByTagName("deviceId").item(0);
И этой операции сбой с java.lang.ArrayIndexOutOfBoundsException