14

PHPmail()関数を使ってメールマガジンを配信しています。

ニュースレターの電子メールのステータスを追跡する必要があります。

ステータスは 1 になり
ます。Num.Of Sent。
2. 配信数。
3. 配達日。
4. 読み取りの合計数。
5. 一意の読み取り回数。
6. 日付を読み取ります。
7.バウンス数。
8. 合計 Num.Of ユーザーがメール内のリンクをクリックしました。
9. 電子メール内のリンクをクリックした一意の Num.Of ユーザー。

上記のステータスから、次のことを追跡できます。
1. 送信済み。// これは、コーディングから送信されたときに追跡されます。
8. メール内のリンクをクリックした総数。// これは、url にパラメータを追加することで追跡されます。
9. 電子メール内のリンクをクリックした一意の数。// これは、url にパラメータを追加することで追跡されます。関数

から送信された電子メールの他のステータスを追跡する方法は? mail()
同じサーバーからメールを送信して追跡する必要があります。

4

7 に答える 7

16

mail() 関数から他のステータスを直接追跡することはできません。Technically Is Sent は、メールがサーバーの送信メール キューに正常に渡されたことを示すだけです。メールがサーバーを離れたかどうかは実際にはわかりません。

1、。メールサーバーのログをチェックして、メールがいつサーバーから送信されたかを正確に確認する必要があります。

2,3. 配信数と配信日 - メール サーバーのログをチェックして、メールがいつサード パーティのメール サーバーに (正常に) 引き渡されたかを確認する必要があります。ただし、これらの統計の信頼性については、(エンド ユーザーのメールボックスに? メール クライアントに?) 配信の定義によって異なります。

4,5,6。総閲覧数、閲覧ユニーク数、閲覧日。これを正確に追跡することはできません。ただし、HTML メールを送信した場合、画像をメールに埋め込むことができ、画像のソースは Web サーバーでした。各画像 URL にメールの送信先の一意の識別子が含まれている場合は、サーバー ログから (または、URL が画像を返す php スクリプトの場合は php を介して) 追跡できます。ただし、これは、エンド ユーザーが外部 Web サーバーからの画像の読み込みを許可することに依存しています (たとえば、Outlook と gmail では、既定でオフになっています)。

7、。差出人アドレスをサーバー上のスクリプトとして送信した場合、バウンス メッセージを解析し、バウンスした数を特定できます。あるいは、差出人アドレスを手動でチェックするメールボックスにすることもできます。

8, 9. メール内の各リンクは、Web サーバー上の URL へのリンクである必要があります。その URL は、(クエリ変数を使用して) 誰がクリックしたか (クエリ変数を使用して)、クリックしたユーザーが何を見たいか (別のクエリ変数) を追跡し、最終的に目的の場所にリダイレクト (php のヘッダー関数) するスクリプトである可能性があります。

于 2011-06-15T06:06:26.847 に答える
10

これらすべての統計を取得するには、さまざまなシステムを使用する必要があります。

送信された番号を確認しています

メール機能のリターン コードは信頼できません。システムがメールの送信を開始することを示すだけです。SMTP 自体を介して通信する特殊な PHP クラスを使用するか、システムのメール ログを解析する必要があります。しかし、この数字はほとんど無意味であり、次のポイントにつながることを覚えておいてください...

配信数確認中

メール ログの解析を開始したり、専用の PHP クラスを使用して自分で SMTP 経由で送信したりしたとしても、メールを渡すチェーンの最初のサーバーしか確認できませんでした。たとえば、大企業では、メールが中央のメール サーバーに渡され、確認することができます。その後、会社の別の内部メール サーバーに送信され、メールは拒否されます。君が知ることはないだろう。スパムフィルターについても話していません。したがって、メールが配信されたかどうかを判断する方法はありません - 次のポイントまで...

読み取り数の確認

より正式には、「開封されたメールの数を確認しています」と言う必要があります。そのためには、一意の URL を持つ画像を HTML メールに追加します。 . 欠点: 受信者が外部コンテンツの読み込みをブロックした場合、それに対してできることは何もなく、受信者が読んだことを知ることはできません。

リンクのクリック数

これは簡単です。メール内のすべてのリンクを独自のドメインのリンクに置き換えます。これらのリンクが訪問されると、カウンターが発生し、訪問者は実際のサイトに転送されます。注意: HTML メールのリンク テキストにドメイン名が含まれていても、別のドメインにリンクしている場合、ほとんどのメール クライアントはそれがスパムであると信じます。たとえば、

www.citibank.com
悪い。

バウンス

それは難しいものです。メールの「送信者」ヘッダーを指定します。これは、メールがバウンスされるアドレスです。「差出人」ヘッダー以外のアドレスを使用できます。つまり、受信者が「返信」ボタンを押すと、info@yourdomain.com にメールを送信できますが、バウンスした場合、メールはバウンス-123- に送信されます。 456@newsletter.yourdomain.com.

秘訣は、ドメイン全体のキャッチオールとしてバウンス アドレスを作成することです。そのため、「...@newsletter.yourdomain.com」に送信されるすべての電子メールは同じ受信トレイに送られる必要があります。電子メール アドレス内に、受信者とメーリングの ID を保存します: バウンス-[受信者 ID]-[メール ID]@newsletter.yourdomain.com. 受信者アドレスは、バウンス時に信頼できる唯一のデータであり、他のすべては受信者のメールサーバーによって削除される可能性があります.

次に、POP3 経由でメールを取得して送信者をチェックする PHP スクリプトをコーディングします。

お役に立てれば幸いです。

于 2011-06-27T13:32:52.860 に答える
4

送信数については、基本的なラッパーを使用できます。

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
于 2011-06-25T04:31:27.417 に答える
3

PHP のmail()関数を通過する送信メール トラフィックを簡単にログに記録できます。

これは、ロギングと電子メールの送信の両方を処理するラッパーを作成することによって行われます。これは比較的簡単に実行でき、設定で制御できphp.iniます。

Linux を実行している場合の詳細については、PHP の mail() 関数で送信されたメールをログに記録する方法でフォーム スパムを検出することをお勧めします。

于 2011-06-23T21:28:36.313 に答える
1

メール マーケティングの PHP ニュースレター スクリプトとして、通常、メールに小さな画像や文章を挿入して、どちらを非表示にします。PHP 関数は小さな画像からエコーを返し、追跡ステータスをメール サーバーに返します。ニュースレターを開き、電子メールにすべての写真を表示できるようにすると、この追跡機能が有効になります。

バウンス システムの場合は、サーバー環境を参照する必要があります。VPS または他のサーバーでコードを構成する場合にのみ、これを有効にすることができます。http://www.phpnewsletter.orgを見るべきだと思います

于 2011-06-28T00:55:54.313 に答える
1

php スクリプトとメール機能 (メール メッセージの変更) にコードを追加することで、メールを追跡し、開封確認を取得できます。

これは、メールの開封確認を追跡するのに役立つリンクです-phpスクリプト

于 2012-08-02T10:19:29.273 に答える
0

(編集済み)

ここでの基本的な概念は、PHP 側で送信を記録することです。各メッセージには HTML と画像が埋め込まれています。ユーザーが電子メールを開くと、画像はサーバーにpingを送信し、電子メールが開封された(読み取られた)という事実と日付(これはサーバーから取得される可能性があります)に加えて、メッセージを開くために使用されたメールクライアントなどのその他の情報を送信します(リクエスト ヘッダー)。

提供されたパラメーターについては、完全にはわかりません。特定の種類のメール サーバー (Microsoft Exchange など) からこれを取得できることは知っていますが、標準の POP3 サーバーがこれをサポートしているかどうかはわかりません。

この方法を使用すると、かなりの量のデータを自動的に収集できます。これは、標準的な Web ページ広告トラッカーのように機能します。サーバー側には、Drupal などの CMS フレームワークまたは CodeIgniter などの PHP フレームワークをお勧めします。

Drupal に移行すれば、面倒な作業のほとんどはすでに完了しています。パズルのピースを好きなように組み立てるだけです。個人的には、MailChimp を使用してメールを追跡することをお勧めします。それに統合するための Drupal モジュールもあります (http://drupal.org/project/mailchimp)。

于 2011-06-23T15:32:42.490 に答える