Как проверить, было ли получено письмо с php - PullRequest
4 голосов
/ 14 декабря 2009

Я новичок в php. Я хочу отправить электронное письмо кому-то, а потом мне нужно проверить, можно ли получить это письмо. Как я могу это сделать? Надеюсь, вы, ребята, понимаете мою проблему;). Заранее спасибо. Марк

Ответы [ 5 ]

6 голосов
/ 14 декабря 2009

Это действительно липкий вопрос. Единственный реальный способ - заставить PHP отслеживать входящие сообщения, чтобы проверять уведомления о «невозможности доставки», которые вы можете получить обратно. Если вы действительно хотите пойти дальше, изучите POP3-коннекторы для PHP. Как это: http://pecl.php.net/package/POP3

if (strpos(strtolower($subject), 'undeliverable') !== false){
    //do whatever you want with the address that couldn't be reached
}

Технически вам не понадобится скомпилированное расширение PHP для POP3 (особенно если вы новичок в PHP) ... вы можете подключаться и читать сообщения, открыв сокет и говорящий почтовый сервер: http://www.adamsinfo.com/a-rudimentary-php-pop3-example/

Редактировать (годы спустя):

Определенно проверить http://mailgun.net/, http://sendgrid.com/, и http://postmarkapp.com/.

2 голосов
/ 14 декабря 2009

Если вы отправляете письма в формате HTML, вы можете использовать небольшую хитрость:

  • создать уникальный идентификатор для отправляемого вами письма (на основе содержимого и получателя)
  • включает изображение, загруженное с вашего веб-сервера

    <img src="http://yourdomain.com/tracker.php?id=1234567" />

  • в tracker.php, зарегистрируйте идентификатор, который вызвал скрипт, и отправьте изображение размером 1px на 1px

Это не будет работать, если почтовый клиент не загружает изображения из Интернета при отображении электронной почты, как, например, Thunderbird (IIRC Outlook делает это тоже)

1 голос
/ 14 декабря 2009

Нет определенного решения для этого. Веб-ошибки ок. идея, но они вымирают, поскольку они очень проблематичны в плане безопасности и по умолчанию блокируются в каждом известном мне почтовом клиенте. Я бы предложил комбинацию проверки входящих сообщений, как предложил brianreavis, и, кроме того, запрос квитанции о доставке с использованием следующей строки заголовка:

 Disposition-Notification-To:<xxx.xxx@example.com>

Таким образом, вы можете получить большинство негативов (отсканированных писем), а также много позитивов (квитанций). Отправка квитанции может быть заблокирована отправителем, но вместе с уведомлениями об ошибках у вас должна быть достаточно надежная система.

0 голосов
/ 03 апреля 2012

Существует идеальное решение с точки зрения того, что электронное письмо прочитано.

Плохая часть в том, что тело письма должно храниться на веб-сервере.

Хитрость: -Отправьте электронное письмо только с небольшим текстом и URL-адресом, поэтому пользователь должен перейти по этому URL-адресу, чтобы прочитать содержимое электронного письма.

Другими словами ... в электронном письме нет ничего о том, что вы хотите отправить, есть только ссылка на уникальную страницу, которую вы создаете перед отправкой такого электронного письма.

Таким образом, чтобы прочитать содержимое, пользователь должен открыть веб-браузер и перейти по такому URL.

Хитрость заключается в том, чтобы поместить немного такого текста в электронную почту ... что-то вроде: бла, бла, бла ... нажмите здесь, чтобы прочитать больше.

Концепция: онлайн тело, оффлайн URL для доступа к такому телу.

Таким образом, вы можете быть уверены в этом: если URL был прочитан, электронное письмо было прочитано.

Плохая часть в том, что информация, которую вы хотите отправить, отсутствует в электронном письме и должна быть на уникальной веб-странице.

Таким образом, вы должны контролировать, чтобы ни один робот не мог перейти на такой URL-адрес ... например, с URL-адресом, например https://server/private/?eMail_Body=user

Надеюсь, эта идея кому-нибудь поможет.

0 голосов
/ 14 декабря 2009

Один из вариантов - это Web Bug , но они далеко не на 100% надежны и, возможно, не являются хорошим способом поведения Он не будет различать электронные письма, которые являются непрочитанными, и те, которые не были доставлены, например, из-за неправильного адреса электронной почты, и можно читать электронную почту, содержащую веб-ошибку, не вызывая ее.

Короче говоря, вы создаете электронное письмо в формате HTML, содержащее элемент с URL-адресом на вашем сайте, который является уникальным для этого письма. Поэтому, если клиент заходит на этот URL, вы можете быть уверены, что кто-то прочитал вашу электронную почту. Википедия приводит этот пример :

Например, электронное письмо, отправленное на адрес somebody@example.org, может содержать встроенное изображение URL http://example.com/bug.gif?somebody@example.org. Всякий раз, когда пользователь читает электронное письмо, запрашивается изображение по этому URL. Часть URL-адреса после знака вопроса игнорируется сервером с целью определения, какой файл отправить, но полный URL-адрес хранится в файле журнала сервера. В результате файл bug.gif отправляется и показывается в программе чтения электронной почты; в то же время на сервере сохраняется тот факт, что определенное электронное письмо, отправленное на somebody@example.org, было прочитано.

Тем не менее, возможно - вероятно, вполне вероятно, - что кто-то сможет прочитать вашу электронную почту, не подключаясь к этому URL. Это может потому что:

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

Это часто используемый вариант - как спаммерами, так и более ответственными маркетологами - но я, вероятно, не рекомендовал бы его, если вы не полностью понимаете его ограничения и последствия с точки зрения того, что люди могут подумать о вас, если вы его используете.

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