Подтвердить что ты не робот

Отслеживать электронную почту php с помощью PHP скрипт?

Я отправляю рассылки по электронной почте с помощью функции php mail().

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

Статус будет. 1. Количество отправленных.
2. Num.Of Delivered.
3. Дата доставки.
4. Общее число. Чтение.
5. Уникальное чтение Num.Of.
6. Чтение даты.
7. Num.Of отскочил.
8. Всего пользователей Num.Of щелкнули ссылки в письме.
9. Уникальные пользователи Num.Of щелкнули ссылки в письме.

В приведенном выше состоянии я мог отслеживать следующее:
1. Отправлено.//Отслеживается, поскольку он отправляется из кодирования.
8. Total Num.Of щелкнул ссылки в письме.//Отслеживается добавлением дополнительных параметров в url.
9. Уникальный Num.Of щелкнул ссылки в письме.//Отслеживается добавлением дополнительных параметров в url.

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

Число кликов по ссылкам

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

www.citibank.com
плохо.

Отказы

Это тяжелый. Укажите заголовок "Отправитель" в своем письме. Это адрес, на который отправлено письмо. Вы можете использовать другой адрес, чем заголовок "От", что означает, что когда получатель попадает на кнопку "Ответить", он может отправить электронное письмо на адрес [email protected], но если он отскакивает, письмо отправляется на bounces-123- [email protected]

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

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

Надеюсь, что смогу помочь вам!

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 7

(Edited)

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

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

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

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