PHP,: ચલાવો સ્ક્રિપ્ટ છબી લોડ ઈ-મેલ સાથે વણાયેલી

આ ટીપ કોઈપણ કે જે ખબર જો ઈ-મેલ તમને મોકલ્યા વાંચ્યો હતો માંગે માટે ઉપયોગી છે. આ કિસ્સામાં, ઇમેઇલ સંદેશ શરીર એક છબી સામેલ, જ્યારે ખોલવામાં, દૂરસ્થ સર્વર પર સ્ક્રિપ્ટ ટ્રિગર કરશે.

રજૂઆત

આ ટેકનીક વ્યાપક ઇમેઇલ માર્કેટિંગ ઉપયોગ થાય છે, જેથી મોકલનાર લક્ષ્ય પ્રેક્ષકો સુધી પહોંચવા માટે ધ્યેય તમારી મેઇલિંગ પ્રાપ્તિકર્તાઓ માટે સેંકડો અથવા ઇમેઇલ્સ હજારો મોકલે છે, અને આશ્ચર્ય પ્રતિસાદ (વળતર) ઝુંબેશ, બીજા શબ્દોમાં કહીએ તો, બિલ્ટ-ઇન ઇમેઇલ જાહેરાત જો પ્રાપ્તકર્તા અથવા વાંચી નથી.

તે કેવી રીતે કામ કરે છે?
તર્ક સરળ છે, તમે ફક્ત ઇમેઇલ શરીરમાં મૂકવામાં (સામગ્રી) એક છબી HTML ટૅગ, SRC લક્ષણ પોઇન્ટ સાથે, સીધા ઇમેજ નથી તે સામાન્ય રીતે કરવામાં આવે છે કારણ કે, પરંતુ એક કસ્ટમ સ્ક્રિપ્ટ માટે દૂરસ્થ સર્વર પર હોસ્ટ, જ્યાં તમે અમુક નિયમિત કરી શકો છો અને, પછી હા, એક છબી રેન્ડર (નથી અથવા). જટિલ? કંઇ, ઉદાહરણ જુઓ:

1
2
3
<?PHP
  <img src="http://seuservidor.com/script.php?email=pessoa@gmail.com&લક્ષ્ય = ટેલર + Lopes" />
?>

શું છે?
નોંધ કરો કે જ્યારે વપરાશકર્તા ઈ-મેલ ખોલે, આપોઆપ માનવામાં છબી લોડ કરવામાં આવશે, જે વાસ્તવમાં સ્ક્રીપ્ટ છે. આ ઇ-મેલ આંકડાઓ દર્શાવે છે કે જોવાય હતા માટે ઉપયોગી છે, સહિત નક્કી ડબ્લ્યુએચઓ ખોલી (પ્રેષ્ય) અને જ્યારે (તારીખ / સમય). સ્પષ્ટ, કોઈ તે “અનુમાન લગાવવા”, આપણે જાણીએ છીએ કે જેઓ ઇમેઇલ ખોલવામાં, atrelamos કારણ કે છબીનું URL આ માહિતી જ્યારે તે મોકલવા.

ખામી
આ કામ કરવા માટે, પ્રાપ્તકર્તા જરૂરી છે કે જેથી તમારા ઇમેઇલ HTML ફોર્મેટમાં વાંચવામાં આવે ગોઠવેલી હોવાની જરૂર, જોકે આ પહેલેથી પ્રમાણભૂત મોટાભાગના વપરાશકર્તાઓ દ્વારા સ્વીકારવામાં છે. સૌથી ખરાબ અંતે, ઈ-મેલ પ્રદાતા તેમ કહેતો એક સંદેશ અવરોધિત છબીઓ પ્રદર્શિત કરશે, પરંતુ પૂછવા વપરાશકર્તા પ્રદર્શિત કરવા માંગે છે કે કેમ, જે પણ સામાન્ય રીતે સ્વીકારવામાં આવે છે, ત્યારથી થોડા લોકો આ વ્યવહારમાં ખાર જુઓ. ગૂગલ કિસ્સામાં, એક સંદેશ કડી સ્વરૂપમાં દેખાય, તેથી:

1
2
3
...
  છબીઓ દેખાતા નથી - નીચે ચિત્રો પ્રદર્શિત - હંમેશા suport ચિત્રો બતાવો@ઇમેઇલ.માઈક્રોસોફ્ટ.સાથે
...

હું આ કરવા માટે બે માર્ગો પર ટિપ્પણી કરશે; બંને સમાન રીતે કામ કરે છે, અને બીજા URL માં માહિતી પ્રદર્શિત કરવા માટે વધુ સમજદાર છે, જોકે તે વધુ સ્ટોરેજ સુવિધા જરૂરી. પર આવો!

ઉકેલ 1

વ્યવહારમાં
તમે માત્ર બે PHP કોડ જરૂર:
(1) એક સાથે HTML ફોર્મેટમાં ઈ-મેલ મોકલવા માટે બિલ્ટ-ઇન આઇએમજી ટેગ
(2) અને અન્ય સમય ઇમેઇલ ખોલવામાં આવે છે માહિતી મેળવવા માટે

પગલું 1 – ઇમેઇલ

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
  // *** તમારું ઇમેઇલ (ઇમેઇલ મોકલનાર)
  $remetente_nome     = 'અનામિક';
  $remetente_email    = 'Anonimo@email.com';
 
  // *** તમારા લક્ષ્ય (પ્રેષક માટે ઈ-મેલ) 
  $destinatario_nome  = 'મારિયો Bross';
  $destinatario_email = 'Mariobross@email.com';
 
  // *** વિષય અને સંદેશ શરીર
  $વિષય      = 'સ્ક્રિપ્ટ અમલ પરીક્ષણ છબી લોડ કરવા માટે.';
  $સંદેશો     = '
    <html lang="pt-br">
      <વડા>
        <meta charset="iso-8859-1" />    
        <શીર્ષક>'.$વિષય.'</શીર્ષક>
      </વડા>
      <શરીર>
        <img src="http://seuservidor.com/script.php?ઇમેઇલ = '.urlencode($destinatario_email).'&લક્ષ્ય = '.urlencode($destinatario_nome).'&વિષય = '.urlencode($વિષય).'" />
      </શરીર>
    </HTML>';
 
  // મથાળું આપતાં જણાવ્યું હતું કે સામગ્રી પ્રકાર એચટીએમએલ છે (આઇએમજી ટેગ વાંચી અને સ્ક્રિપ્ટ ચલાવવા માટે સમર્થ થવા માટે)
  $હેડર       = "MIME-Version: 1.0\એ"; 
  $હેડર      .= "Content-type: text / html; charset = ISO-8859-1\એ"; 
  $હેડર      .= "From: ".(ખાલી($remetente_nome) ? $remetente_email : '"'.$remetente_nome.'" <'.$remetente_email.'>')."\એ";
 
  // ઇ-મેઇલ મોકલવો
  $ઇમેઇલ = ખાલી($destinatario_nome) ? $destinatario_email : '"'.$destinatario_nome.'" <'.$destinatario_email.'>';
  મેલ($ઇમેઇલ, $વિષય, $સંદેશો, $હેડર);
?>

પગલું 2 – માહિતી મેળવે

સારી, તમે નોંધ્યું છે કે જ્યારે TAG આઇએમજી વાંચન કોલ ફાઈલ કરવામાં આવશે “script.php”, કેટલાક? તેથી હવે અમે માહિતી મેળવી અને તે સ્ટોર કરવા માટે તેને બનાવવા માટે, પ્રાધાન્ય ડેટાબેઝ માં,.

બનાવવામાં કોષ્ટક
માહિતી મેળવનાર અમે ચાલુ કરવાની જરૂર ઇમેઇલ ખોલવામાં, અમે નીચે એક જેવા ટેબલ બનાવી શકો છો. ક્ષેત્ર જુઓ `datahora_visualizado`, que refere-se última data e hora em que o usuário visualizou o e-mail e o campo `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 ;

સ્ક્રિપ્ટ માહિતી મેળવે છે અને એક છબી પ્રદર્શિત કરવા માટે
અંત, તરીકે માહિતી લેવા દો ઇ-મેઇલ સરનામું, પ્રાપ્તકર્તાનું નામ, સંદેશ અને તારીખ / સમય વિષય જે ઇમેઇલ ખોલવામાં, ડેટાબેઝમાં સંગ્રહ આપણે બનાવવામાં, અમે ભવિષ્યના આંકડાકીય બનાવવા માટે જરૂર હોય તો. કોઈ અંતિમ ડુ સ્ક્રિપ્ટ, ખરેખર બનાવવા અને એક છબી પ્રદર્શિત, માત્ર નથી આઇએમજી અસ્તિત્વને કટોકટી સાથે ટૅગ વિચાર :), પરંતુ તમે કંઇ પ્રદર્શિત કરવા માંગો છો, તો, ઓછામાં ઓછા એક ખાલી છબી બનાવી (1×1 પિક્સેલ) તૂટેલા ટેગ મળી નથી.

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
  // આરંભ અને ઇનપુટ પરિમાણો સંભાળે
  $destinatario_email = ટ્રિમ(strip_tags(addslashes($_REQUEST['EMAIL'])));
  $destinatario_nome  = ટ્રિમ(strip_tags(addslashes($_REQUEST['મેળવનાર'])));
  $વિષય            = ટ્રિમ(strip_tags(addslashes($_REQUEST['વિષય'])));       
 
  // ડેટાબેઝ સાથે જોડાય (તમારું કનેક્શન સમાયોજિત)
  $કડી = mysql_connect('Mysql.seuservidor.com', 'રૂટ', 'Mypassword *** ***') અથવા ('ડેટાબેઝ થી કનેક્ટ કરવામાં નિષ્ફળ.'); 
  mysql_select_db('seubancodedados') અથવા ('Falhou ao selecionar o banco de dados');
 
  // Monta a SQL e insere no banco de dados, caso email ainda não exista, ou atualiza contador se existir
  $SQL = 'SELECT email FROM maladireta WHERE email="'.$destinatario_email.'"';
  $res = mysql_query($SQL);
  જો (mysql_num_rows($res) > 0) {
    $SQL = 'UPDATE maladireta SET datahora_visualizado="'.date('Y-m-d H:હું:s').'", contador=contador+1 WHERE email="'.$destinatario_email.'"';    
  }
  બીજું {
    $SQL = 'INSERT INTO maladireta VALUES (null, "'.$destinatario_email.'", "'.$destinatario_nome.'", "'.$વિષય.'", "'.date('Y-m-d H:હું:s').'", null, 0)';
  }
  mysql_query($SQL);
 
  // Cria e exibe a imagem embutida ao email
  હેડર("Content-type: image/png");
  $img = imagecreatefrompng("imagem.png");
  imagepng($img);
  છબીઓ($img);
?>

ટીકા: ભૂલશો મળીને સ્ક્રિપ્ટ મૂકી નથી ચિત્ર, કોઈ કિસ્સામાં, હું કહેવાય “imagem.png”. આ છબી ઇમેઇલ પ્રાપ્તકર્તાનું શરીર દેખાશે, અને તે છે જ્યાં માર્કેટિંગ લોકો જાહેરાત મૂકી, પરંતુ તે એક લોગો અથવા ગમે તમે ઇચ્છો હોઇ શકે છે. સ્ક્રિપ્ટ પરીક્ષણ અને કાર્યો કરવામાં આવી હતી!

ઉકેલ 2

બીજી શક્યતા એ
સાથી લીએન્ડ્રો દ્વારા સૂચવવામાં તરીકે, વધુ સમજદાર વિકલ્પ અને “સુરક્ષિત” કરશે, તેના બદલે છબી URL માં જેમ કે ઇમેઇલ માહિતી ઘણો મુક્કો મારવાની, વિષય, વગેરે, ઇમેઇલ મોકલતી વખતે હેશ બનાવો આ માહિતી તે લિંક, અને URL માત્ર હેશ મોકલો. જ્યારે પ્રાપ્તકર્તા ઇમેઇલ ખોલે અને છબી અપલોડ, ટ્રાફિક ફક્ત પછી હેશ કરશે કે અમારા સ્ક્રિપ્ટ દ્વારા કબજે કરવામાં આવશે અને માહિતી આપણે જાણીએ છીએ કરવા માંગો છો કડી.

હેશ ટેબલ અને ડેટા લિંક બનાવી
અમે એક ટેબલ કે દરેક સમય રહે છે બનાવશે અમે એક ઈ-મેલ મોકલવા. નોંધો કે ક્ષેત્ર `hash`, જે ઈ-મેલ એટેચમેન્ટ કે મોકલવામાં આવ્યો હતો અને ડેટા મેળવનાર કે કોષ્ટકમાં માહિતી સંગ્રહિત થઈ છે કારણ કે સેવા આપશે.

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

મોકલી રહ્યું છે ઈ-મેલ

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
  // *** તમારું ઇમેઇલ (ઇમેઇલ મોકલનાર)
  $remetente_nome     = 'અનામિક';
  $remetente_email    = 'Anonimo@email.com';
 
  // *** તમારા લક્ષ્ય (પ્રેષક માટે ઈ-મેલ) 
  $destinatario_nome  = 'મારિયો Bross';
  $destinatario_email = 'Mariobross@email.com';
 
  // *** અન્ય ડેટા હાજર અને હેશ કરવા (ઓળખકર્તા)
  $હેશ               = MD5(રેન્ડ());
  $વિષય            = 'સ્ક્રિપ્ટ અમલ પરીક્ષણ છબી લોડ કરવા માટે.';
  $datahora_envio     = date('Y-m-d H:હું:s');
 
  // ડેટાબેઝ સાથે જોડાય
  $કડી = mysql_connect('Mysql.seuservidor.com', 'રૂટ', 'Mypassword *** ***') અથવા ('ડેટાબેઝ થી કનેક્ટ કરવામાં નિષ્ફળ.'); 
  mysql_select_db('seubancodedados') અથવા ('Falhou ao selecionar o banco de dados');  
 
  // Monta a SQL e insere no banco de dados
  $SQL = 'INSERT INTO maladireta VALUES (null, "'.$હેશ.'", "'.$destinatario_email.'", "'.$destinatario_nome.'", "'.$વિષય.'", "'.$datahora_envio.'", null, 0)';
  mysql_query($SQL);
 
  // *** સંદેશ મોકલવામાં આવી રહી
  $સંદેશો     = '
    <html lang="pt-br">
      <વડા>
        <meta charset="iso-8859-1" />    
        <શીર્ષક>'.$વિષય.'</શીર્ષક>
      </વડા>
      <શરીર>
        <img src="http://seuservidor.com/script.php?હેશ = '.$હેશ.'" />
      </શરીર>
    </HTML>';
 
  // મથાળું આપતાં જણાવ્યું હતું કે સામગ્રી પ્રકાર એચટીએમએલ છે (આઇએમજી ટેગ વાંચી અને સ્ક્રિપ્ટ ચલાવવા માટે સમર્થ થવા માટે)
  $હેડર       = "MIME-Version: 1.0\એ"; 
  $હેડર      .= "Content-type: text / html; charset = ISO-8859-1\એ"; 
  $હેડર      .= "From: ".(ખાલી($remetente_nome) ? $remetente_email : '"'.$remetente_nome.'" <'.$remetente_email.'>')."\એ";
 
  // ઇ-મેઇલ મોકલવો
  $ઇમેઇલ = ખાલી($destinatario_nome) ? $destinatario_email : '"'.$destinatario_nome.'" <'.$destinatario_email.'>';
  મેલ($ઇમેઇલ, $વિષય, $સંદેશો, $હેડર);
?>

નોંધ કરો કે, આ કિસ્સામાં, એક URL (SRC) છબી માત્ર હેશ સાથે છે.

હિસાબી ઇમેઇલ પ્રદર્શિત

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
  // ઇમેઇલ હેશ જોવાયા કેપ્ચર
  $હેશ = ટ્રિમ(strip_tags(addslashes($_REQUEST['હેશ'])));
 
  // ડેટાબેઝ સાથે જોડાય
  $કડી = mysql_connect('Mysql.seuservidor.com', 'રૂટ', 'Mypassword *** ***') અથવા ('ડેટાબેઝ થી કનેક્ટ કરવામાં નિષ્ફળ.'); 
  mysql_select_db('seubancodedados') અથવા ('Falhou ao selecionar o banco de dados');
 
  // Monta એસક્યુએલ અને ડેટાબેઝમાં તારીખ ઇમેઇલ અને કાઉન્ટર જોઈ સુધારાઓ
  $SQL = 'SELECT hash FROM maladireta WHERE hash="'.$હેશ.'"';
  $res = mysql_query($SQL);
  જો (mysql_num_rows($res) > 0) {
    $SQL = 'UPDATE maladireta SET datahora_visualizado="'.date('Y-m-d H:હું:s').'", contador=contador+1 WHERE hash="'.$હેશ.'"';
    mysql_query($SQL);
  }
 
  // Cria e exibe a imagem embutida ao email
  હેડર("Content-type: image/png");
  $img = imagecreatefrompng("imagem.png");
  imagepng($img);
  છબીઓ($img);
?>

આહ, 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, કોઈ કિસ્સામાં, પરથી જોઇ ઈ-મેલ તમામ તાજેતરની રેકોર્ડ શોધ 27 જાન્યુઆરી 2013. તે એક ટિપ છે…

1
2
3
4
5
6
7
8
 
  પસંદ કરો * 
  FROM
      `maladireta`
  ક્યાં
      Contador > 0 અને 
      DATE ના(datahora_visualizado) >= DATE ના("2013-01-27")
;
હિટ કુલ સંખ્યા: 34926

8 સમીક્ષાઓ “PHP,: ચલાવો સ્ક્રિપ્ટ છબી લોડ ઈ-મેલ સાથે વણાયેલી

  1. લીએન્ડ્રો ચેવ્સ જણાવ્યું હતું કે:

    ટેલર,
    નથી એ સારી વાત છબી લિંક વપરાશકર્તાની ઇમેઇલ મૂકવા. આદર્શ મોકલવા સમયે ડેટાબેઝમાં માહિતી દાખલ કરો અને હેશ કોષ્ટક અથવા લિંકને ID મૂકી છે, તેથી જે લોકો ઇમેઇલ ખોલવામાં ઓળખવા માટે.

    • Oi લીએન્ડ્રો, ટિપ્પણી માટે આભાર. તે ચર્ચાસ્પદ છે. માહિતી સુરક્ષા વિશે વિચારવાનો તમે સાચા છો, પરંતુ વ્યવહારમાં તે યોગ્ય preciousness હશે, કારણ કે ઈ-મેલ લિંક (છબી) તમને સુરક્ષિત કરવા માટેનો એકમાત્ર પ્રાપ્તકર્તા પોતાના ઇનબૉક્સ ઉપલબ્ધ થશે મહત્વપૂર્ણ માને છે કે. તે મારી પાસેથી કંઈક છુપાવવા માટે કે મને ખબર છે! વધુમાં, તમે તમારી મેઇલિંગ રેકોર્ડ હજારો સાથે બીજા ટેબલ તમારા બેઠક પર પકડી હશે, પણ જાણીને જો ઇમેઇલ્સ તેમાં શામેલ માન્ય છે વગર. પછી જો તમે ઇચ્છતા “enchugar” તમારી બેંક, નહિ, કોષ્ટકો વચ્ચે સંદર્ભ અખંડિતતા એક બાબત તરીકે, નોંધ રાખવા માટે જરૂરી હશે, ક્યારેય જાણ્યા કોણ ઇમેઇલ ખોલવામાં પીડા પર. પરંતુ કારણ કે અમે સુરક્ષા વિશે વાત કરી રહ્યાં છે, ઈ-મેલ એક વાયરશાર્ક Name જીવન દ્વારા દખલગિરી કર્યા ટાળવા માટે, શું કરી શકાય SSL વાપરવા માટે છે (https) બંને ઇમેઇલ મોકલવા, છબી લિંક તરીકે. પરંતુ તમારા દરખાસ્ત જેમ, હું આવા ઉકેલ પ્રકાશિત કરશે, ઉપાર્જિત!

  2. ઓલા ,
    હું વ્યક્તિ જે સંદેશ વાંચવા આઇપી વિચાર શોધું છું , તેમ છતાં જો તે ઉદાહરણ માટે એક Hotmail એકાઉન્ટ છે તે યુએસ માં ડોમેન સાથે એક IP શ્રેણી ઉપાડવાનું. તેથી ખૂબ નથી મદદ . હું તેનો મશીનની વાસ્તવિક IP કેવી રીતે મેળવી શકું ?

  3. રિજીસ જણાવ્યું હતું કે:

    વિચિત્ર ક્યારેક તે કામ કરે છે અને ક્યારેક Chrome નો ઉપયોગ કરીને કામ કરતું નથી, ઓપેરા ઈ ફાયર ફોક્સ કોઈ Gmail ઈ Hotmail – કૅશ અને કૂકીઝ સાફ, પરંતુ ક્યારેક તે બીડી રેકોર્ડિંગ નથી, તો ઇમેઇલ ખોલવામાં આવ્યું નથી અથવા !!

  4. ડિએગો જણાવ્યું હતું કે:

    nome..email સાથે રજિસ્ટ્રી સ્ક્રિપ્ટ Galera..tenho…CPF…રોહિત…હું તમામ વપરાશકર્તા પછી રજિસ્ટર અને મારા ડેટાબેઝ મોકલવા માગતા હતા …તેના ઇમેઇલ automatico..tipo માટે કંઈક આપે છે
    ઉદાહરણ:”માહિતી સફળતાપૂર્વક રજીસ્ટર ..” અમારું સંપર્ક માટે રાહ

    હું ગમશે??

    • Opa, હું પોસ્ટ માં જણાવ્યું હતું કે: “આ કામ કરવા માટે, પ્રાપ્તકર્તા જરૂરી છે કે જેથી તમારા ઇમેઇલ HTML ફોર્મેટમાં વાંચવામાં આવે ગોઠવેલી હોવાની જરૂર”. મૂળભૂત રીતે એચટીએમએલ રેન્ડર કરવામાં આવે, પણ Gmail ટેક્સ્ટ રેંડરિંગ ખસેડવાની, ત્યાં કામ કરશે નહિં, કારણ કે તે સરળતાથી તેમને રેન્ડરીંગ બદલે લખાણ તરીકે એચટીએમએલ ટૅગ્સ પ્રદર્શિત કરશે.

એક જવાબ છોડો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *