PHP:送信された電子メールを誰が読んだかを確認しますか?
一部のユーザーにメールを送信していますが、誰がそのメールを読んだか知りたいのです。つまり、誰かがそのメールを読んだ場合、そのユーザーのメールアドレスと日付/時刻/IPを含むログファイルが保持されます。 このために、ユーザーが次のようにメールを開くたびにユーザーのメールアドレスにアラートを送信するjavascript関数をメール(htmlテンプレート)とともに送信します。
for($n=0; $n<sizeof($checkBox); $n++){
$mail = new PHPMailer();
$mail->IsHTML(true);
$mail->Subject = $subject;
$function = "<script language='javascript'>function stats(emailId){alert(emailId);}</script>";
$bodyOpen = "<body onload='stats(".$checkBox[$n].");'>";
$msg_body .= $body .= "<table><tr><td>Hello Everyone</td></tr></table></body>";
$mail->Body = $function.$bodyOpen.$msg_body;
$mail->WordWrap = 50;
$mail->FromName = 'Muhammad Sajid';
$mail->IsMAIL();
$mail->From = '[email protected]';
$mail->AddAddress($checkBox[$n]);
$sent = $mail->Send();
}
htmlテンプレートは正常に機能し、ページの読み込み時にアラートポップアップが表示されますが、このhtmlテンプレートを送信するために使用した場合は機能しません。
そして私はPHP5.x.x/javascriptを使用してこの問題を解決したいだけで、他のソフトウェアやサードパーティのツールは使用しません。 何か助けがありますか..?
答え :
解決策:
メールにヘッダーを追加:
Disposition-Notification-To: [email protected]
前述のように、信頼性は低く、次のようなことを行うことをお勧めします。
<img src="http://yourdomain.com/emailreceipt.php?receipt=<email of receiver>" />
データベースにログインします。ただし、これもメールクライアントの画像表示機能によって制限され、画像を検出しないためにメールが迷惑メールになる場合もあります...回避策は次のとおりです。そのスクリプトの最後に実際に画像(ロゴなど)を出力します。
編集: phpmailerクラスをすばやく検索すると、次のことがわかりました。
$mail->ConfirmReadingTo = '[email protected]';
ただし、上記のDisposition-Notification-Toメソッドと同じです。
答え :
解決策:
ビーコン画像をそのようにメールで送信します
<img src='http://www.yourserver.com/beacon.php?email_id=$email_id&email_address=$user_address' style='width:1px;height:1px'>
次に、beacon.phpファイルを使用してデータをログに記録します。次に、適切なヘッダーを含む1X1画像を出力する必要があります。
重要な注意事項
多くの人気のあるメールクライアント(Gmailなど)が外部画像をブロックするようになったため、これは絶対に確実な方法ではありません。
答え :
解決策:
これを100%効果的に行うことはほぼ不可能です。
コンテンツの保存場所を制御できます。 http://www.example.com/34hg038g85gb8no84g5 で、そのコンテンツへのリンクをメールで提供すると、そのURLがいつ表示されたかを検出できます。
-
MailChimpやその他のニュースレターキャンペーンで使用されている方法を使用して、非表示の画像をメールに入れます。この画像は、管理しているサーバーに配置する必要があります。ユーザーがメールを開いたときに、その画像がヒットしたことを検出できます。 。
答え :
解決策:
メールリーダーはブラウザではなく、JavaScriptをサポートしていません。彼らは適切なCSSさえサポートしていないので、あまり期待しないでください。ですから、正直なところ、あなたがやろうとしていることをあなたができる方法は見当たらない
答え :
解決策:
1行追加するだけです:
$dt = date('F \ jS\,\ Y h:i:s a');
for($n=0; $n<sizeof($checkBox); $n++){
$mail = new PHPMailer();
$mail->IsHTML(true);
$mail->Subject = $subject;
$src = "<img src='msajid.isgreat.org/readmail.php?dt=".$dt."&eid=".$checkBox[$n]."' />";
$msg_body .= $src .= "<table><tr><td>Hello Everyone</td></tr></table>";
$mail->Body = $function.$bodyOpen.$msg_body;
$mail->WordWrap = 50;
$mail->FromName = 'Muhammad Sajid';
$mail->IsMAIL();
$mail->From = '[email protected]';
$mail->AddAddress($checkBox[$n]);
$sent = $mail->Send();
}
およびreadmail.phpファイルに、日付/時刻とユーザーIDをチェックマーク付きで挿入し(日付/時刻が添付されていない場合)、Gmail、hotmailのみで修正し、Yahoo。では修正しません。 。 誰かがYahoo....の修正にも役立つでしょうか?
はぁぁぁ。 ばかげた間違いは次のような完全なURLを使用するだけです:
$src = "<img src='http://www.msajid.isgreat.org/readmail.php?dt=".$dt."&eid=".$checkBox[$n]."' />";
Yahooでも機能します...
答え :
解決策:
単純なPHPファイルが含まれている画像を生成しなかった理由を正確には知りませんでしたが(6時間前の投稿で述べたように)、これは別の非常に複雑な生成方法です。自分のPHP5.4.30Webサーバーによって拒否されなかった画像ファイル。
これが/email_image/サブディレクトリ内のindex.phpファイルに入れたコードです:
<?php
$message_id = $_REQUEST['message_id'];
$graphic_http = 'http://mywebsite.com/email_image/message_open_tracking.gif';
$filesize = filesize( 'message_open_tracking.gif' );
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: private',false );
header( 'Content-Disposition: attachment; filename="a_unique_image_name_' . $message_id . '.gif"' );
header( 'Content-Transfer-Encoding: binary' );
header( 'Content-Length: '.$filesize );
readfile( $graphic_http );
exit;
?>
画像のファイル名には、次のものを使用しました:
http://mywebsite.com/email_image/?message_id=12345
email_imageフォルダー内には、「message_open_tracking.gif」という名前の空白の1x1gif画像もあります。
index.phpファイルを修正して、message_idを使用して、そのメッセージを既読としてマークすることもできます。受信者の電子メールアドレスなど、他の変数がクエリ文字列に含まれている場合、それらの値はそのindex.phpファイル内でも使用できます。
次の記事を提供してくれたBennettStoneに感謝します。 http://www.phpdevtips.com/2013/06/email-open-tracking-with-php-and-mysql/
答え :
解決策:
これは古いスレッドですが、応答する必要がありました...これを考慮しなければならない私たちのために、私たちは持っている人々の代わりに自分自身を置くことをお勧めします私たちの努力を阻止するためにスパム対策ソフトウェアを書くこと。 ?を検出するまたは、画像タグ内の.php(または他のスクリプト/バイナリ拡張子)は、想定される「スパム暗殺者」プログラマーとしては些細なことです...1x1画像を識別するのと同じように...
私は大統領選挙運動のために国家デジタルディレクターとして2.5年間を過ごし、候補者が出る前に2,000万ドルを調達しました-そのキャンペーンのために開発したものは次のとおりです。
-
送信時(またはそれ以前)に、TO:電子メールアドレスでハッシュを生成し、それを電子メールアドレスの横のデータベースに保存します。
-
生成したハッシュを使用して、電子メール内の小さいがはっきりと見えるロゴを変更し、ロゴファイル名のハッシュを使用してロゴのコピーを作成します。例:emxlogox.0FAE7E6.png-参照してくださいロゴの電子メール内の一意の画像-ファイル名にハッシュ名を含むロゴのコピーを作成します。この特定のロゴシリーズは、対象となる大量の電子メールにのみ表示されます。他の目的でコピーしないように(またはコピーする場合は大幅に名前を変更しないように)、乗組員に警告してください。ファイル名の最初の部分は、解析を高速化するために他のコンテキストのログに表示されないものである必要があり、誤ったヒットを分類するために作成する必要のあるコードである必要があります。
-
要求されているロゴの出現についてログを解析し、ファイル名からハッシュを抽出して、1つの電子メールアドレスと照合します。また、解析プログラムは、IPアドレスと、電子メールを取得して開くのにかかった時間の差を取得できるため、応答性の高い受信者と、電子メールを開くのに1週間かかった受信者を特定できます。 IPで地理検索を実行し、既存の場所と一致するかどうかを確認するか、移動パターン(またはプロキシ使用パターン)の記録を開始します。ジオデルタは、電子メールの転送を識別することもできます。
もちろん、同じハッシュがクリックの記録に使用され、1回目と2回目のオプトインも使用されます。 (これで、これらの不正使用レポートへの応答に複数のオプトインの「ドシエ」があり、電子メールの評判も保護されています。)
この方法は、誰が友達にメールを転送するかを特定するためにも使用できます。その場合、「優れた転送者」に、ある種のエリートデジタルボランティアクルーに参加してもらい、割引や特典など、ビジネスやプロジェクトに適したものを提供してもらいます。 ..本質的に、その同じハッシュはリファラーコードにもなります。
メール内のロゴを右クリックしてファイル名を変更せずに保存し、「どこにでも」投稿するように依頼することもできます(画像には、読みにくいものではなく、覚えやすく、読みやすく、意味のあるショートリンクが付いている必要があります) bit.lyショートリンク)。次に、Google Search APIを使用して、その方法で助けてくれた人を特定し、感謝したり、報酬を与えたりできます...この目的のために、ロゴファイル名の最初の部分がunsportingly.unique.emxlogoxのように本当にユニークである場合に役立ちます.0FAE7E6.pngなので、何百万ものGoogle Search APIクエリを実行する必要はありません。ファイル名の一意の最初の部分を検索するだけで、ヒットを取得した後にハッシュを確認できます。
ロゴのコピーがデータベースに表示されたリンクを保存して、ネット上のどこでアクティブであり、あなたを助けたかについての書類に追加します。
はい、それは遅くて負担がかかりますが、私たちが私たちの電子メールリストとの「関係」を発展させたいと言うとき、それはあなたが個々の治療を与えるためにあなたがしなければならないことです。友達を特定して報酬を与えましょう。そして、はい、1つのディレクトリに何百万ものハッシュされたファイル名の画像が含まれることになりますが、ストレージは安価であり、覗き見と実際にその関係を持つことは価値があります。
答え :
解決策:
メールにJavaScriptを追加することはできません。
唯一の解決策は、電子メールにリンクのみを含め、サーバーにメッセージを含めることです。そうすれば、メッセージ自体が表示されたことを知ることができます。
答え :
解決策:
ユーザー固有の画像(1pxの空白が適切な場合があります)を電子メールに埋め込み、それが暑いかどうかを記録することは公正な解決策です。しかし、クライアントのようなGmailの問題は、デフォルトで外部画像をブロックします。
答え :
解決策:
前回の投稿がしばらく前だったので、この方法がまだ機能するかどうかはわかりません。
PHP 5.4.30を実行しているサーバーでこのメソッドをテストしましたが、画像が出力されないようです。
これは非常に単純なコードです:
<img src="http://theservername.com/myaccount_email_read_offline.php">
この画像からクエリ文字列と追加のコードを削除したことに注意してください。
その別のページを開くと、myaccount_email_read_offline.phpは画像を表示しました。
ただし、代わりにPHPファイルを含めて画像を含めようとしても機能しませんでした。
答え :
解決策:
他の回答のいくつかで述べたように、メッセージにリモートでホストされている画像が含まれている場合(および受信者のメールクライアントが設定されている場合)、受信者がメッセージを開いたことを検出できます。リモートでホストされている画像を開くには)
UltraSMTP は、この目的のために、サーバーを介して送信される各送信メッセージにリモートでホストされているイメージを挿入する送信SMTPメールサーバーです。
PHPスクリプトからUltraSMTPを介して(PHPMailerを使用して)メールを送信するためのサンプルコードについては、https://www.ultrasmtp.com/kb/developers.phpを参照してください。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。