Как отследить письмо на Java? - PullRequest
7 голосов
/ 17 ноября 2009

Как я могу отслеживать электронную почту?

Я использую Java на стороне сервера для отправки электронных писем. Я хочу отслеживать, доставлен ли он, открыт и т. Д. Как я могу это сделать?

Ответы [ 6 ]

9 голосов
/ 17 ноября 2009

Это не специфическая проблема Java.

  1. Вы можете создать электронное письмо в формате HTML и вставить невидимый GIF-файл, который будет отправляться на ваш сервер. Некоторое программное обеспечение, такое как Outlook, и некоторые программы веб-почты блокируют это для ненадежных электронных писем.
  2. Вы можете запросить квитанцию ​​о возврате. Многие почтовые программы полностью игнорируют это, и те, которые обычно не спрашивают пользователя, хотят ли они отправить это.

Пример:

email.AddHeaderField("Disposition-Notification-To","<g.revolution@stackoverflow.com>")
3 голосов
/ 17 ноября 2009

Нет способа гарантировать, что вы всегда будете получать уведомление о доставке или открытое сообщение.

Почтовые серверы могут принимать почту и впоследствии отбрасывать ее. пользователи могут читать почту, но отклонить уведомление.

«Webbugs» (также известные как html-источники почты, содержащие специальный токен, позволяющий распознавать почту) не работают в большинстве почтовых программ.

На самом деле очень маловероятно, что вы увидите, что кто-то получил сообщение.

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

1 голос
/ 17 ноября 2009

Полагаю, вы отправляете его через SMTP. Всякий раз, когда ваша почта отправляется на ваш SMTP-сервер, ваша Java-программа не контролирует ее:

1) Если вы хотите узнать, доставлена ​​ли ваша почта, вам следует как-то связаться с вашим SMTP-сервером (если SMTP-сервер находится вне вашего контроля, забудьте об этом) и посмотрите, было ли отправлено ваше письмо.

2) Вы не можете знать, было ли письмо получателем получено. Максимум, что вы можете сделать, это установить флаг, что почта требует подтверждения, но это зависит от того, хочет ли пользователь явно отправить это подтверждение. Другая возможность - установить какую-то ссылку на ваш сайт в почте, по которой нужно кликнуть, чтобы увидеть контент. Вы сможете отследить, нажал ли пользователь эту ссылку.

0 голосов
/ 25 февраля 2019

что вы можете сделать, это - вам нужно встроить невидимое изображение в тело, в котором src будет вызывать страницу на сервере и регистрировать это событие, вы можете сделать это только в кодировке HTML.

пример -

<img src="ImageServer.aspx?imageID=track.jpg& custID=134ghxx34343ai& campID=32434"/>

, а затем в ImageServer.aspx будет код обработки, который будет регистрировать это событие или сохранять его в базе данных.

пример -

private void Page_Load(object sender, System.EventArgs e)
{
    // content type should be resolved programmatically
    Response.ContentType = "image/jpeg";
    if (!IsPostBack) Track();
    Response.WriteFile(GetImageFileByID());
}
0 голосов
/ 25 сентября 2014

Вы можете добавить что-то вроде

<span style="display:none">Tracking no: ${TRACK_NO}</span>
в тело письма. Это всегда должно быть в ответе, если только почтовый клиент не удалит его.
0 голосов
/ 17 ноября 2009

Если вы отправляете электронное письмо в формате HTML, вы можете добавить изображение размером 1x1 пиксель с некоторыми параметрами отслеживания, которое возвращает ваш веб-сервер. Это не на 100% надежно, так как некоторые почтовые клиенты (и пользователи) блокируют изображения в электронных письмах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...