Привет! Сегодня на ум пришла идея как проверить, прочитал ли собеседник сообщение электронной почты или нет.
“- Постой! – скажете вы, – так ведь есть же специальный флаг уведомления о прочтении!”. Всё верно, такая функция заложена, только вот действует она селективно. Собеседник, при просмотре сообщения через веб-интерфейс, увидит нечто подобное:
То есть подтверждение прочтения отправиться только с его согласия. Ну и что мешает нашему недобросовестному собеседнику проигнорировать эту кнопку и “морозиться” дальше, делая вид, что он ничего не получал? У меня возникла идея получше.
Правда реализовать эту идею можно буде не прямо на коленке, но предварительно технически подковавшись, вполне достойно.
Принцип такой: мы включим в письмо какой-либо элемент, расположенный по удалённой ссылке, ведущей на подконтрольный сервер и будем мониторить журнал веб-сервера на предмет обращения к этому ресурсу. Если немного запутанно, то сейчас покажу на практике.
Сформируем следующее письмо:
Нетрудно заметить, мы вложили в письмо изображение, в качестве адреса указали ссылку, ведущую на наш сайт, запрашивающую картинку img.png?12345 (12345 – это некий параметр, здесь можно указать всё что угодно, например какой-нибудь хеш, если планируется различать письма от разных абонентов.. Этот параметр мы ещё увидим). Размер изображения, кстати, 1х1 пиксел. Оно на сервере не существует, поэтому отдаваться будет 404 код.
В момент формирования письма сразу увидим несколько обращений на наш URL. Пока на них не обращаем внимания, это признак того, что всё работает.
Для примера я отправлю письмо себе. Вот что увидим:
Скорее открываем письмо..
Ничего противозаконного не видно, как планировалось, нас игнорируют… но мы смотрим в логи веб-сервера и видим там:
Некто с IP адреса 188.93.56.130 запросил ресурс /img.png?12345. Но мы-то знаем, что параметр 12345 мы отправляли некому Мистеру Икс, так что письмо он прочёл.
Правда некоторые почтовые клиенты распознают прикреплённое изображение некорректно:
Но тем не менее, при клике на проблемное вложение всё-таки пытаются запросить ресурс с нашего веб-сайта, где факт прочтения успешно детектируется. Причём IP-адрес уже непосредственно пользователя, а не Mail.Ru-шный, как в случае с веб-интерфейсом.
Да, этот способ не идеален и работает хорошо в случае просмотра писем через веб-интерфейс, но сам подход может оказаться полезен. Точно так же можно мониторить клики по ссылкам. Например абоненту в WhatsApp, который отключил все уведомления о прочтении. По ссылке он всё-таки кликнул и на сервере в логах засветился факт клика и его IP-адрес.
P.S. Здесь я рассказываю скорее не способ, а подход! Почему в письме это лучше всего – письмо как HTML-страница строится и включает в себя картинку. Поэтому при отображении все ресурсы запрашиваются у серверов автоматически.
Если смотрит через веб, то хорошо, запрос отправится автоматически. А если через клиента, то несуществующая картинка не будет запрашиваться, пока мышкой не ткнёшь? Какое-то себе такое не очень средство ))
Тогда сделайте валидную картинку. Допустим логотип свой или подпись картинкой, загрузите на сервер. И в настройках логгирования конкретно на этот ресурс сделать access_log (т.к. картинка будет отдаваться с кодом 200) сделать логгирование в другой файл. И всё будет нормально!