Обработка, непоставленная электронные письма в веб-приложении

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

14
задан Bob Dalgleish 2 September 2017 в 16:17
поделиться

3 ответа

Во-первых, важно понять различие между "От": заголовок (который получатель видит в их почтовом клиенте) и адрес отправителя (который также называют обратным каналом конверта или аргументом команде "MAIL FROM" SMTP). Адрес отправителя - то, куда возвращенные сообщения идут, когда электронная почта не может быть поставлена, следовательно другой обратный канал имени.

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

Изменение адреса отправителя состоит в том, где можно сделать умные вещи помочь обнаружить почтовые возвраты и сообщить их к веб-приложению или отправителю. Наиболее распространенная вещь, которую Вы будете видеть, состоит в том, чтобы закодировать получатель адрес в адресе отправителя, например, с адресом отправителя как это: sender+recipient=recipientdomain.com@senderdomain.com. MTA, ответственный за senderdomain.com, должен знать для поставки всех электронных писем для sender+foo@senderdomain.com на sender@senderdomain.com - но это - довольно общее требование. Затем Вы берете электронное письмо, которое получено, и вместо того, чтобы пытаться работать из возвращенного сообщения в содержании (который мог быть в любом формате), кем был получатель, можно разобраться в нем от адреса получателя.

можно сделать более сложные вещи также, как хеширование адреса получателя, таким образом, это не видимо непосредственно в адресе отправителя, например, sender+e72fab38fb@senderdomain.com. И Вы могли включать некоторый идентификатор для электронного письма, которое было послано, в случае, если Вы посылаете несколько электронных писем тому же адресу и хотите знать который возвращенный.

Эти приемы называют Переменный Обратный тракт Конверта или VERP и обычно реализуют программным обеспечением списка рассылки.

18
ответ дан 1 December 2019 в 12:54
поделиться

Существует 3 "Заголовка", которые имеют электронные письма.

  1. От.
    • Это - то, к чему пользователь видит как 'инициатор'
  2. Ответ-.
    • Это - то, где электронное письмо послано, если ответом является обратный тракт intented
  3. .
    • Это - то, где электронное письмо направляется, если место назначения не существует.

Вы, вероятно, хотите установить 3-е :)

(Примечание, некоторые серверы не отвечают на эти потерянные сообщения вообще, becuase недавно, спаммеры помещали адреса там, которые не являются их собственным, делая 3-е нападение возврата части с помощью автоматизированной системы ответа для превращения почтовых серверов в открытое реле!)

Посмотрите Раздел 4.4 из этого документа для получения дальнейшей информации: http://www.faqs.org/rfcs/rfc822.html

3
ответ дан 1 December 2019 в 12:54
поделиться

Точно, какую стандартную программу Вы используете для отправки электронного письма? Мы посылаем электронные письма через необработанный SMTP с помощью HTTP put_lines, и ответы приходят в норму к адресу, от которого мы назначаем в: поле.

Видят, имеет ли Ваша обертка API SMTP Ответ На: поле

Некоторые API не могли бы обеспечить ту функциональность, потому что она увеличивает возможность спама.

0
ответ дан 1 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

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