PHPmail()
関数を使ってメールマガジンを配信しています。
ニュースレターの電子メールのステータスを追跡する必要があります。
ステータスは 1 になり
ます。Num.Of Sent。
2. 配信数。
3. 配達日。
4. 読み取りの合計数。
5. 一意の読み取り回数。
6. 日付を読み取ります。
7.バウンス数。
8. 合計 Num.Of ユーザーがメール内のリンクをクリックしました。
9. 電子メール内のリンクをクリックした一意の Num.Of ユーザー。
上記のステータスから、次のことを追跡できます。
1. 送信済み。// これは、コーディングから送信されたときに追跡されます。
8. メール内のリンクをクリックした総数。// これは、url にパラメータを追加することで追跡されます。
9. 電子メール内のリンクをクリックした一意の数。// これは、url にパラメータを追加することで追跡されます。関数
から送信された電子メールの他のステータスを追跡する方法は? mail()
同じサーバーからメールを送信して追跡する必要があります。
7 に答える
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 のヘッダー関数) するスクリプトである可能性があります。
これらすべての統計を取得するには、さまざまなシステムを使用する必要があります。
送信された番号を確認しています
メール機能のリターン コードは信頼できません。システムがメールの送信を開始することを示すだけです。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 スクリプトをコーディングします。
お役に立てれば幸いです。
送信数については、基本的なラッパーを使用できます。
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 のmail()
関数を通過する送信メール トラフィックを簡単にログに記録できます。
これは、ロギングと電子メールの送信の両方を処理するラッパーを作成することによって行われます。これは比較的簡単に実行でき、設定で制御できphp.ini
ます。
Linux を実行している場合の詳細については、PHP の mail() 関数で送信されたメールをログに記録する方法でフォーム スパムを検出することをお勧めします。
メール マーケティングの PHP ニュースレター スクリプトとして、通常、メールに小さな画像や文章を挿入して、どちらを非表示にします。PHP 関数は小さな画像からエコーを返し、追跡ステータスをメール サーバーに返します。ニュースレターを開き、電子メールにすべての写真を表示できるようにすると、この追跡機能が有効になります。
バウンス システムの場合は、サーバー環境を参照する必要があります。VPS または他のサーバーでコードを構成する場合にのみ、これを有効にすることができます。http://www.phpnewsletter.orgを見るべきだと思います
php スクリプトとメール機能 (メール メッセージの変更) にコードを追加することで、メールを追跡し、開封確認を取得できます。
これは、メールの開封確認を追跡するのに役立つリンクです-phpスクリプト
(編集済み)
ここでの基本的な概念は、PHP 側で送信を記録することです。各メッセージには HTML と画像が埋め込まれています。ユーザーが電子メールを開くと、画像はサーバーにpingを送信し、電子メールが開封された(読み取られた)という事実と日付(これはサーバーから取得される可能性があります)に加えて、メッセージを開くために使用されたメールクライアントなどのその他の情報を送信します(リクエスト ヘッダー)。
提供されたパラメーターについては、完全にはわかりません。特定の種類のメール サーバー (Microsoft Exchange など) からこれを取得できることは知っていますが、標準の POP3 サーバーがこれをサポートしているかどうかはわかりません。
この方法を使用すると、かなりの量のデータを自動的に収集できます。これは、標準的な Web ページ広告トラッカーのように機能します。サーバー側には、Drupal などの CMS フレームワークまたは CodeIgniter などの PHP フレームワークをお勧めします。
Drupal に移行すれば、面倒な作業のほとんどはすでに完了しています。パズルのピースを好きなように組み立てるだけです。個人的には、MailChimp を使用してメールを追跡することをお勧めします。それに統合するための Drupal モジュールもあります (http://drupal.org/project/mailchimp)。