PHP: e-pochta ko'milgan ishga tushirish skript yuklanmoqda image

Bu Maslahat yuborgan e-mail o'qib bo'lsa, bilishni istagan har bir kishi uchun foydalidir. Bu holatda, elektron pochta xabari organizmida rasm qo'shish, ochilgan, masofaviy serverda bir skriptni boshlanishiga turtki.

taqdimot

Ushbu uslub elektron pochta marketingida keng qo'llaniladi, maqsadli auditoriyaga erishish uchun jo'natuvchi sizning to'g'ridan-to'g'ri pochtangizni oluvchilariga yuzlab yoki minglab elektron pochta xabarlarini yuborishi uchun., va mulohazalarni bilmoqchiman (qaytish) aksiya, Boshqa so'zlar bilan aytganda, qabul qiluvchining elektron pochtaga o'rnatilgan reklamani o'qiganligi yoki o'qimaganligi.

Bu qanday ishlaydi?
Fikrlash oddiy, siz shunchaki elektron pochta qutisiga qo'yasiz (tarkib) HTML IMAGE yorlig'i, SRC atributi bilan, to'g'ridan-to'g'ri odatdagidek rasmga emas, lekin uzoq serverda joylashtirilgan maxsus skript uchun, bu erda siz bir necha muntazam va, Oh Ha, rasmni ko'rsatish (yoki yo'q). Murakkab? Hech narsadan, misolga qarang:

1
2
3
<?php
  <img src="http://seuservidor.com/script.php?email=pessoa@gmail.com&destinatario = Teylor + Lopes" />
?>

Bu nima uchun?
Eslatma foydalanuvchi e-mail ochganda, avtomatik ravishda taxmin tasvir yuklanadi bo'ladi, qaysi aslida bir buyruq fayli. elektron pochta statistika chiqildi bo'lishi uchun foydali bo'ladi, ochilgan, shu jumladan, aniqlash (oluvchi) va qachon (Sana / Vaqt). aniq, hech gap “taxmin”, Biz elektron pochta ochilgan kim, atrelamos tasvir URL bu ma'lumotlar uni jo'natishda, chunki.

kamchiligi
ish bu uchun, oluvchi, albatta, elektron pochta HTML formatida o'qiladi, shunday qilib, tuzilgan kerak, Bu allaqachon da standart foydalanuvchilar ko'pchiligi tomonidan qabul qilingan. yomon kunda, e-mail provayder deb bloklangan tasvirlar deb bir xabar ko'rsatadi, Foydalanuvchi displey istasa, lekin so'rab, Bundan tashqari, odatda, qabul qilingan, necha kishi bu amalda bo'lgan yomonlikni ko'rish beri. Google holda, Xabar bog'laning shaklida paydo, shunday:

1
2
3
...
  emas, balki ko'rsatish tasvirlar - Quyida rasmlarni ko'rsatish - Har doim qo'llab suratlar ko'rsatish@elektron pochta.microsoft.bilan
...

Men buni ikki yo'llarini izoh beradi; Har ikki teng mehnat, va ikkinchi yana aqlli URL ko'rsatish ma'lumotlarga emas, u ko'proq saqlash xususiyati talab da. kel!

qaror 1

amalda
Siz faqat ikki PHP kodlari kerak:
(1) Bir bilan HTML formatida e-mail yuborishni ajralmas IMG teg
(2) va boshqa elektron pochta ochilgan vaqtda ma'lumotlarni olish uchun

QADAM 1 – Email

sendmail.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
  // *** sizning e-mail (email jo'natuvchi)
  $remetente_nome     = "Anonim";
  $remetente_email    = "Anonimo@email.com";
 
  // *** Nishon (jo'natuvchiga e-mail) 
  $destinatario_nome  = "MarioBross";
  $destinatario_email = "Mariobross@email.com";
 
  // *** Mavzu va xabar tanasi
  $mavzu      = "Yuk rasmga skript ijrosini viktorina.;
  $Xabar     = "
    <html lang="pt-br">
      <bosh>
        <meta charset="iso-8859-1" />    
        <sarlavha>".$mavzu."</sarlavha>
      </bosh>
      <badan>
        <img src="http://seuservidor.com/script.php?elektron pochta = '.urlencode($destinatario_email)."&target = ".urlencode($destinatario_nome)."&Mavzu = '.urlencode($mavzu)."" />
      </badan>
    </html>";
 
  // Header tarkib turi HTML, deb bildirgan (IMG teg o'qish va buyruq faylini ishlatish imkoniyatiga ega bo'lish uchun)
  $header       = "MIME-Version: 1.0\n"; 
  $header      .= "Content-type: matn / html; charset = iso-8859-1\n"; 
  $header      .= "From: ".(tozalang($remetente_nome) ? $remetente_email : '"'.$remetente_nome."" <".$remetente_email.">")."\n";
 
  // E-mail
  $elektron pochta = tozalang($destinatario_nome) ? $destinatario_email : '"'.$destinatario_nome."" <".$destinatario_email.">";
  pochta($elektron pochta, $mavzu, $Xabar, $header);
?>

QADAM 2 – ma'lumot qo'lga

yaxshi, Agar TAG IMG o'qiyotganda bir qo'ng'iroq faylga qilinadi payqadim “script.php”, bir qancha? Endi biz ma'lumotlarni olish va uni saqlash uchun, uni yaratish kerak, afzal bir bazasida,.

yaratish TABLE
Biz bardavom kerak, deb ma'lumot oluvchi elektron pochta ochganingizni, Biz quyida kabi bir stol yaratishingiz mumkin. qarang maydon `datahora_visualizado`, o'tgan sana va vaqtni bildiradi foydalanuvchi e-pochta va mamlakatni o'rganib chiqdi `contador`, que irá registrar a quantidade de vezes que o e-mail foi visto.

maladireta.sql
1
2
3
4
5
6
7
8
9
CREATE TABLE  `maladireta` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `email` VARCHAR( 100 ),
  `destinatario` VARCHAR( 100 ),
  `assunto` VARCHAR( 200 ),
  `datahora_envio` DATETIME NOT NULL,
  `datahora_visualizado` DATETIME,
  `contador` INT DEFAULT 0
) ENGINE = MYISAM ;

Axborotni olish va tasvirni ko'rsatish uchun skript
yuritilishi, kabi ma'lumotlarni olaylik Qabul qiluvchining elektron pochtasi, Qabul qiluvchining ismi, xabarning mavzusi va sanasi / vaqti elektron pochtani kim ochganligi, biz yaratgan ma'lumotlar bazasida hamma narsani saqlash, kelajakda statistika qilishimiz kerak bo'lsa. Oxirgi ssenariy yo'q, aslida tasvirni yarataylik va namoyish qilaylik, faqat emas, balki IMG ekzistensial inqiroz bilan teg olish :), lekin hech narsa ko'rish zarur bo'lsa,, kamida bir bo'sh tasvirni yaratish (1×1 pixel) singan uchun emas Nishonlar.

script.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
  // Ni boshlab va Qo'llari Kirish parametrlarni
  $destinatario_email = tartib(strip_tags(addslashes($_REQUEST["Email"])));
  $destinatario_nome  = tartib(strip_tags(addslashes($_REQUEST["Qabul qiluvchi"])));
  $mavzu            = tartib(strip_tags(addslashes($_REQUEST["Mavzu '])));       
 
  // ma'lumotlar bazasiga ulanadi (Aloqani O'ZGARTIRIShLARI)
  $aloqa = parametrsiz mysql_connect("Mysql.seuservidor.com", "Root", "Mypassword *** ***") yoki The("Ma'lumotlar bazasiga ulanish muvaffaqiyatsiz tugadi."); 
  mysql_select_db("Seubancodedados") yoki The("Ma'lumotlar bazasini tanlang bo'lmadi");
 
  // Monta SQL va ma'lumotlar bazasida uchlari, elektron pochta allaqachon mavjud bo'lmasa, yoki yangilanishlar bo'lsa qarshi bor
  $SQL = 'SELECT email FROM maladireta WHERE email="'.$destinatario_email.'"';
  $mahallasi = mysql_query($SQL);
  agar (mysql_num_rows($mahallasi) > 0) {
    $SQL = 'UPDATE maladireta SET datahora_visualizado="'.sana("Y-m-d H:men:s ").'", contador=contador+1 WHERE email="'.$destinatario_email.'"';    
  }
  yana boshqa {
    $SQL = "INSERT into maladireta qiymati (null, "'.$destinatario_email.'", "'.$destinatario_nome.'", "'.$mavzu.'", "'.sana("Y-m-d H:men:s ").'", null, 0)";
  }
  mysql_query($SQL);
 
  // Elektron pochtaga o'rnatilgan rasmni yaratadi va ko'rsatadi
  header("Content-type: image / png");
  $img = imagecreatefrompng("imagem.png");
  imagepng($img);
  imagedestroy($img);
?>

kuzatish: Não esqueça de colocar junto ao script uma imagem, hech ishi, chamei deimagem.png”. Bu tasvir email oluvchining tanasida paydo bo'ladi, va marketing, odamlar reklama qo'yish qaerda, lekin u siz istagan bir logo yoki bo'lishi mumkin. skript sinov va ishlari etildi!

qaror 2

boshqa yo'l
Leandro hamkasbi taklif moslik soch, yanada aqlli variant va “xavfsiz” edi, o'rniga tasvir URL bunday elektron pochta kabi ma'lumotlar juda ko'p delme, mavzu, etc, Bu ma'lumotlarga uni bog'lab e-pochta yuborganda, bir Hash yaratish, va faqat HASH URL yuborish. oluvchi elektron pochta ochiladi va tasvirni upload qachon, transport keyin, bu faqat HASH bizning skript tomonidan qo'lga va biz bilishni istayman ma'lumotlarga bog'liq qilinadi.

hash-jadval va bog'laning ma'lumotlarni yaratish
Biz bir e-mail yuborish, har doim to'ldirib, bir jadval hosil qiladi. maydonini Eslatma `hash`, e-mail jo'natilgan ilova va jadvalda saqlangan ma'lumotlar qabul qiluvchi bo'lib xizmat qiladi.

maladireta.sql
1
2
3
4
5
6
7
8
9
10
CREATE TABLE  `maladireta` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `hash`VARCHAR( 50 ) EMAS NULL,
  `email` VARCHAR( 100 ),
  `destinatario` VARCHAR( 100 ),
  `assunto` VARCHAR( 200 ),
  `datahora_envio` DATETIME NOT NULL,
  `datahora_visualizado` DATETIME,
  `contador` INT DEFAULT 0
) ENGINE = MYISAM

Yuborish E-mail

sendmail.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
  // *** sizning e-mail (email jo'natuvchi)
  $remetente_nome     = "Anonim";
  $remetente_email    = "Anonimo@email.com";
 
  // *** Nishon (jo'natuvchiga e-mail) 
  $destinatario_nome  = "MarioBross";
  $destinatario_email = "Mariobross@email.com";
 
  // *** Boshqa ma'lumotlar bardavom va HASH uchun (identifikatori)
  $hash               = md5(baxya());
  $mavzu            = "Yuk rasmga skript ijrosini viktorina.;
  $datahora_envio     = sana("Y-m-d H:men:s ");
 
  // ma'lumotlar bazasiga ulanadi
  $aloqa = parametrsiz mysql_connect("Mysql.seuservidor.com", "Root", "Mypassword *** ***") yoki The("Ma'lumotlar bazasiga ulanish muvaffaqiyatsiz tugadi."); 
  mysql_select_db("Seubancodedados") yoki The("Ma'lumotlar bazasini tanlang bo'lmadi");  
 
  // Monta SQL va ma'lumotlar bazasida uchlari
  $SQL = "INSERT into maladireta qiymati (null, "'.$hash.'", "'.$destinatario_email.'", "'.$destinatario_nome.'", "'.$mavzu.'", "'.$datahora_envio.'", null, 0)";
  mysql_query($SQL);
 
  // *** Xabar borliq Yuborilganlarning
  $Xabar     = "
    <html lang="pt-br">
      <bosh>
        <meta charset="iso-8859-1" />    
        <sarlavha>".$mavzu."</sarlavha>
      </bosh>
      <badan>
        <img src="http://seuservidor.com/script.php?hash = '.$hash."" />
      </badan>
    </html>";
 
  // Header tarkib turi HTML, deb bildirgan (IMG teg o'qish va buyruq faylini ishlatish imkoniyatiga ega bo'lish uchun)
  $header       = "MIME-Version: 1.0\n"; 
  $header      .= "Content-type: matn / html; charset = iso-8859-1\n"; 
  $header      .= "From: ".(tozalang($remetente_nome) ? $remetente_email : '"'.$remetente_nome."" <".$remetente_email.">")."\n";
 
  // E-mail
  $elektron pochta = tozalang($destinatario_nome) ? $destinatario_email : '"'.$destinatario_nome."" <".$destinatario_email.">";
  pochta($elektron pochta, $mavzu, $Xabar, $header);
?>

Eslatma deb, Bu holatda, URL (src) tasvir faqat hash bilan.

Contabilizando e-mail visualizado

script.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
  // Captura o HASH do e-mail visualizado
  $hash = tartib(strip_tags(addslashes($_REQUEST['hash'])));
 
  // ma'lumotlar bazasiga ulanadi
  $aloqa = parametrsiz mysql_connect("Mysql.seuservidor.com", "Root", "Mypassword *** ***") yoki The("Ma'lumotlar bazasiga ulanish muvaffaqiyatsiz tugadi."); 
  mysql_select_db("Seubancodedados") yoki The("Ma'lumotlar bazasini tanlang bo'lmadi");
 
  // Monta a SQL e atualiza data de visualização do email e contador no banco de dados
  $SQL = 'SELECT hash FROM maladireta WHERE hash="'.$hash.'"';
  $mahallasi = mysql_query($SQL);
  agar (mysql_num_rows($mahallasi) > 0) {
    $SQL = 'UPDATE maladireta SET datahora_visualizado="'.sana("Y-m-d H:men:s ").'", contador=contador+1 WHERE hash="'.$hash.'"';
    mysql_query($SQL);
  }
 
  // Elektron pochtaga o'rnatilgan rasmni yaratadi va ko'rsatadi
  header("Content-type: image / png");
  $img = imagecreatefrompng("imagem.png");
  imagepng($img);
  imagedestroy($img);
?>

Ah, se você quiser consultar os e-mails que foram visualizados a partir de uma data, poderia fazer um script com uma SQL tipo essa que, hech ishi, busca todos os registros recentes de e-mail vistos a partir de 27 Yanvar 2013. Fica a dica

1
2
3
4
5
6
7
8
 
  Select ni * 
  FROM
      `maladireta`
  WHERE
      contador > 0 VA 
      TARIX(datahora_visualizado) >= TARIX("2013-01-27")
;
umumiy kirish: 34898

8 sharhlar “PHP: e-pochta ko'milgan ishga tushirish skript yuklanmoqda image

  1. Leandro Chaves dedi:

    Taylor,
    Emas, balki yaxshi tajriba Rasm aloqa yilda foydalanuvchining pochta qo'yish. ideal yuborish vaqtida ma'lumotlar bazasida ma'lumotlarni kiritish va hash jadval yoki link id qo'yish hisoblanadi, elektron pochta ochgan aniqlash uchun shunday deb.

    • Oý Leandro, Fikr uchun rahmat. 'S munozarali Bu. Axborot xavfsizligi haqida fikr siz ekansiz o'ng, lekin amalda u to'g'ri preciousness bo'lardi, e-mail link chunki (surat) Agar faqat oluvchining o'z qutingizga mavjud bo'ladi himoya qilish uchun muhim ko'rib, deb. Men bilaman, deb mendan yashir narsa iborat! Bundan tashqari, Agar pochta yozilganligini minglab bilan taxtga yana bir jadval ushlab kerak edi, hatto vergul undagi amal qiladi, agar bilmasdan. Keyin siz xohlagan bo'lsa “enchugar” sizning bank, eplolmadi, jadvallar orasida ma'lumot yaxlitligini bir masala sifatida, yozuvlarni saqlab qolish uchun zarur bo'ladi, hech qachon elektron pochta ochilgan kim bilish og'riq haqida. Lekin, chunki, biz xavfsizlik haqida gaplashib turibmiz, ega oldini olish uchun elektron pochta orqali bir Wireshark hayoti tomonidan ushlangan, nima qilinishi mumkin foydalanish SSL iborat (https) Har ikki elektron pochta yuborish, Rasm aloqa sifatida. Ammo, sizning taklifiga kabi, Men bunday hal nashr etadi, qiymat!

  2. Regis dedi:

    G'alati Ba'zan Chrome yordamida ishlamaydi ba'zan ishlari va, Opera e Fire Fox hech Gmail e Hotmail – keshni va cookie tozalash, elektron pochta ochilgan yoki yo'q bo'lsa, lekin ba'zan u BD yozishni qilmaydi !!

  3. Diego dedi:

    nome..email bilan ro'yxatga olish kitobi skriptni Galera..tenho…CPF…rg…Men ma'lumotlar bazasiga barcha A'zoni xabar yuboring keyin xohlagan …uning elektron pochta automatico..tipo uchun biror narsa qaytadi
    O'RNAK:”Axborot muvaffaqiyatli ro'yxatdan ..” Bizning aloqa uchun kutish

    Men istardim??

    • opa, Men Post dedi sifatida: “ish bu uchun, oluvchi, albatta, elektron pochta HTML formatida o'qiladi, shunday qilib, tuzilgan kerak”. Sukut bo'yicha HTML taqdim etiladi, Lekin hatto Gmail matnga ko'rsatishni harakat, bor ishlamaydi, Bu shunchaki, ularni amalga oshirish o'rniga, matn sifatida HTML teglar ko'rsatishi, chunki.

Leave a Reply

Sizning email manzilingiz chop qilinmaydi. Kerakli joylar belgilangan *