Трек на PHP письма с помощью php скрипта?

Я отправляю электронные бюллетени с помощью php .

Я должен отслеживать статус рассылки.

статус будет
1. Номер.Отправленных.
2. Номер.Доставлено.
3. Дата доставки.
4. Полный Ноль.Читать.
5. Уникальная Числ.Читать.
6. Прочитайте дату.
7. Номер.Отскочил.
8. Полный Ноль.Пользователи нажимали ссылки в письме.
9. Уникальная Числ.Пользователи нажали ссылки в электронная почта.

из вышеуказанного статуса я мог отслеживать следующее:
1. посланный. // Это отслеживается по мере его отправки из кода.
8. Полный Ноль.Из щелкнул ссылки в электронном письме. // Это отслеживается путем добавления дополнительных параметров в URL.
9. Уникальная Числ.Из щелкнул ссылки в электронном письме. // Это отслеживается путем добавления дополнительных параметров в URL.

как отслеживать другой статус писем, отправленных из mail() функции?
Я должен отправлять и отслеживать электронные письма с одного сервера.

7 ответов


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

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

2,3. Num поставленной и поставленной даты-снова вам нужно будет проверить журналы почтового сервера, чтобы увидеть, когда почта была передана over (успешно)на сторонний почтовый сервер. Однако это будет зависеть от вашего определения доставки (в почтовый ящик конечных пользователей? В их почтовый клиент?) о том, насколько надежными будут эти статистические данные.

4,5,6. Общее число прочитано, уникальный номер прочитан, дата чтения. Вы не можете точно отследить это. Однако, если вы отправили HTML-письмо, вы можете вставить изображение в письмо, в котором источником изображения был ваш веб-сервер. Если каждый URL-адрес изображения имеет уникальный идентификатор отправленного лица затем вы можете отслеживать это из журналов сервера (или через php, если url-адрес был PHP-скриптом, который вернул изображение). Однако это зависит от конечного пользователя, разрешающего загрузку изображений с внешних веб-серверов (например, Outlook и gmail по умолчанию отключены).

7,. Если вы отправили адрес from, чтобы быть скриптом на вашем сервере, он может проанализировать сообщение bounce и определить, сколько отскочило. В качестве альтернативы вы можете просто от адрес почтового ящика, который вы заходите и проверяете вручную.

8, 9. Каждая ссылка в письме должна быть ссылка на URL-адрес на вашем сервере. Этот URL-адрес может быть скриптом, который отслеживает, кто нажал (с помощью переменной запроса) и что они хотят видеть (другая переменная запроса), а затем перенаправляет их (функция заголовка в php) туда, где вы хотите, чтобы они оказались.


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

Проверка номера отправлено

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

Проверка номера доставлено

даже если вы начнете анализировать почтовые журналы или использовать специализированный класс PHP для отправки через SMTP самостоятельно, вы можете проверить только первый сервер в цепочке, на которую вы передаете электронное письмо. Например, в большой компании Почта может быть передана на центральный почтовый сервер, который можно проверить. Затем он отправляется на другой внутренний почтовый сервер компании, который отказывается от почты. Ты никогда не узнаешь. Даже не говоря о спам-фильтрах. Таким образом, нет способа узнать, была ли почта доставлено-до следующего пункта...

проверка количества считываний

более формально, вы должны сказать "проверка количества открытых писем". Для этого вы добавляете изображение с уникальным URL-адресом в свою HTML-почту, напримерhttp://mywebsite.com/images/IDOFRECIPIENT/IDOFMAILING/logo.jpg - когда URL запрашивается, вы знаете, что соответствующий получатель открыл рассылку. Недостаток: если получатель блокирует загрузку внешнего содержимого, вы ничего не можете поделать, ты никогда не узнаешь о его чтении.

количество кликов по ссылкам

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

www.citibank.com
is плохой.

отскакивает

Это сложно. Укажите заголовок "отправитель" в вашей электронной почте. Это адрес, на который будет отправлено письмо. Вы можете использовать другой адрес, чем заголовок "От", что означает, что когда получатель нажимает кнопку "ответить", он может отправить электронное письмо info@yourdomain.com, но если он отскакивает, электронное письмо отправляется bounces-123-456@newsletter.yourdomain.com.

трюк состоит в том, чтобы создать подпрыгивающие адреса как catch-all для всего домена-поэтому каждое письмо отправлено в "...@newsletter.yourdomain.com-должен зайти в тот же почтовый ящик. Внутри адреса электронной почты вы сохраняете идентификатор получателя и почтового отправления: отскоки - [recipientid] - [mailingid]@newsletter.yourdomain.com - ... Адрес получателя-это единственные надежные данные при отскоке, все остальное может быть удалено почтовым сервером получателя.

затем просто Закодируйте PHP-скрипт, который извлекает почту через POP3 и проверяет отправителя.

надеюсь, я смогу помочь вам!


для количества отправленных вы можете использовать базовую оболочку:

class Mailer
{
    /**
     * Events
     *
     * @var array
     */
    protected $_events = array();

    /**
     * Number of successful emails
     *
     * @var int
     */ 
    protected $_numFailures = 0;

    /**
     * Number of failed emails
     *
     * @var int
     */ 
    protected $_numSuccesses = 0;

    /**
     * Send email using PHP mail() function
     * 
     * @param string $to Send to email address
     * @param string $subject Email subject
     * @param string $message Email message
     * @param string $additionalHeaders Optional. Additional headers
     * @param string $additionalParams Optional. Additional params
     * @return Mailer
     */
    public function mail($to, $subject, $message, $additionalHeaders = '', $additionalParams = '')
    {
        $result = mail($to, $subject, $message, $additionalHeaders, $additionalParams);

        if ($result) {
            $this->_numSuccesses++;
        } else {
            $this->_numFailures++;
        }

        if (isset($this->_events['mail'])) {
            foreach ($this->_events['mail'] as $event) {
                $event($result, $to, $subject, $message);
            }
        }

        return $this;
    }

    /**
     * Get total number of emails sent
     *
     * @return int
     */
    public function count()
    {
        return $this->_numSuccesses + $this->_numFailures;
    }

    /**
     * Get number of successes
     *
     * @return int
     */
    public function getSuccessCount()
    {
        return $this->_numSuccesses;
    }

    /**
     * Get number of failures
     *
     * @return int
     */
    public function getFailureCount()
    {
        return $this->_numFailures;
    }

    /**
     * Add event
     * 
     * @param string $subject Event subject
     * @param Closure $event Event to execute when subject called
     * @return Mailer
     */
    public function addEvent($subject, Closure $event)
    {
        if (!is_string($subject)) {
            throw new InvalidArgumentException('$subject must be a string');
        }
        $this->_events[$subject][] = $event;
        return $this;
    }
}

/** Mailer */
$mailer = new Mailer();

$mailer->addEvent('mail', function($result, $to, $subject, $message) {
    // Code to log to database
});

$mailer->mail($to, $subject, $message);

// Execution order:
// 1. Mailer::mail()
// 2. Increase successes or failures, as appropriate
// 3. Execute 'mail' events
// 4. Closure with code to log to database executed

вы можете легко регистрировать любой трафик исходящей почты, который проходит через PHP .

это делается путем создания оболочки, которая будет заботиться о обоих: регистрации и отправки сообщений электронной почты. Это относительно легко сделать, и может управляться с помощью php.ini настройки.

Я могу порекомендовать: Как регистрировать письма, отправленные с помощью функции mail () PHP для обнаружения спама формы для получения более подробной информации, если вы используете linux.


Как PHP newsletter script в маркетинге электронной почты, мы обычно вставляли небольшую картинку или предложения в электронную почту, чтобы сделать их невидимыми. Функция PHP вернет эхо от небольших изображений, чтобы вернуть статус отслеживания на ваш почтовый сервер. При открытии информационного бюллетеня, и позволяют появляться все фотографии в электронной почте, эта функция отслеживания будет активирована.

для системы отскоков она должна ссылаться на серверную среду. Только при настройке код в вашем VPS или каком-либо другом сервере, это может быть активировано. Я считаю, что вы должны увидеть http://www.phpnewsletter.org


вы можете отслеживать электронные письма и получать чеки на чтение, добавляя дополнительный код к скрипту php и функции почты (изменения в сообщении электронной почты).

вот ссылка, которая поможет вам отслеживать электронную почту читать квитанции - PHP script


(отредактировано)

основная концепция здесь заключается в том, что вы записываете отправки на своей стороне PHP. Каждое сообщение будет иметь встроенный HTML и изображение. Когда пользователь открывает электронные письма, изображение запускает пинг на сервер, отправляя факт открытия (чтения) электронной почты и дату (это может прийти с сервера), а также другую информацию, такую как почтовый клиент, используемый для открытия сообщения (заголовки запросов).

по поставленным параметрам я не совсем уверен. Я знаю, что вы можете получить это от определенных типов почтовых серверов (например, Microsoft Exchange), но я не знаю, поддерживают ли это ваши стандартные серверы POP3.

вы можете собрать приличный объем данных автоматически с помощью этого метода. Он будет работать как стандартный трекер объявлений веб-страницы. Для серверной части я бы рекомендовал CMS-фреймворк, такой как Drupal или PHP-фреймворк, такой как CodeIgniter.

Если вы идете Drupal, то большая часть тяжелого подъема уже будет сделано для вас. Вам просто нужно собрать кусочки головоломки так, как вам нравится. Лично я бы рекомендовал использовать MailChimp для отслеживания ваших писем. У них есть модуль Drupal для интеграции с ним (http://drupal.org/project/mailchimp).