2013-04-06 11 views
5

jest ktoś zna żadnego rozwiązania dla następnego problemuJak wiemy poczty jest wysyłanie i odczytywanie przez użytkownika podczas wysyłania poczty za pomocą protokołu SMTP, PHPMailer

w moim projekcie, jestem wysłać e-mail do klienta za pomocą smtp i php przesyłkę i skrypt gmail . więc kiedy jestem wysyłać pocztę gmail wysłać pocztę do konkretnego klienta. za to przekazuję login i nazwę użytkownika Gmaila, które są prawidłowe. wszystkie wiadomości są wysyłane poprawnie. ale czasami może się zdarzyć, że jakiś klient nie odbierze poczty iw tym czasie nie jestem w stanie wykryć żadnego błędu. więc w każdy sposób, kiedy wysyłam pocztę do klienta, a kiedy klient ją otrzymuje i czyta ją w tym czasie, otrzymałem potwierdzenie.

Proszę, jeśli ktoś ma jakiś pomysł, pomóż mi.

+0

bez dokonywania to zbyt skomplikowane, można zalogować się do serwisu jak mailgun a następnie śledzenia lub otrzymane, otwarte lub odbił się ładnie udało. – Barry

Odpowiedz

0

Zawsze możesz dodać odpowiedź na adres e-mail, który sprawdzi się, jeśli wystąpi błąd, więc otrzymasz e-mail z powrotem, a jeśli zostanie odczytany, dołącz zdjęcie (puste zdjęcie o wielkości 1 piksela) i dodaj kod to zdjęcie jak i możesz zobaczyć, ile trafień ten obraz otrzymał lub otrzymał w ogóle.

1
<?php 
/** 
* Simple example script using PHPMailer with exceptions enabled 
* @package phpmailer 
* @version $Id$ 
*/ 

require ('../class.phpmailer.php'); 

try { 
     $mail = new PHPMailer(true); //New instance, with exceptions enabled 

     $body    = "Please return read receipt to me."; 
     $body    = preg_replace('/\\\\/','', $body); //Strip backslashes 

     $mail->IsSMTP();       // tell the class to use SMTP 
     $mail->SMTPAuth = true;     // enable SMTP authentication 
     $mail->Port  = 25;     // set the SMTP server port 
     $mail->Host  = "SMTP SERVER IP/DOMAIN"; // SMTP server 
     $mail->Username = "EMAIL USER ACCOUNT";  // SMTP server username 
     $mail->Password = "EMAIL USER PASSWORD";   // SMTP server password 

     $mail->IsSendmail(); // tell the class to use Sendmail 

     $mail->AddReplyTo("[email protected]","SOMEONE"); 

     $mail->From  = "[email protected]"; 
     $mail->FromName = "SOMEONE"; 

     $to = "[email protected]"; 

     $mail->AddAddress($to); 

     $mail->Subject = "First PHPMailer Message[Test Read Receipt]"; 

     $mail->ConfirmReadingTo = "[email protected]"; //this is the command to request for read receipt. The read receipt email will send to the email address. 

     $mail->AltBody = "Please return read receipt to me."; // optional, comment out and test 
     $mail->WordWrap = 80; // set word wrap 

     $mail->MsgHTML($body); 

     $mail->IsHTML(true); // send as HTML 

     $mail->Send(); 
     echo 'Message has been sent.'; 
} catch (phpmailerException $e) { 
     echo $e->errorMessage(); 
} 
?> 

Niektóre modyfikacje należy wykonać w powyższym skrypcie.

  1. Skonfiguruj serwer poczty SMTP.

  2. Ustaw poprawne z & z nazwy ([email protected] ktoś)

  3. Ustawić poprawne rozwiązanie

from

również

  1. Delivery reports and read receipts in PHP mail
+0

jakiego rodzaju zmiany serwera poczty SMTP wymagają. –

+0

Zmiany serwera poczty SMTP? po prostu dodaj dane SMTP w powyższym kodzie? –

0

Możesz sprawdzić to na dwa różne sposoby, np. Używając nagłówka "Disposition-Notification-To" do funkcji poczty, to nie zadziała w każdym przypadku, ponieważ większość ludzi nie chce wysyłać czytać wpływy kasowe. Jeśli możesz, na swoim serwerze, wpłynąć na to, czy tak się stało, spamer może z łatwością łatwo zidentyfikować aktywne i nieaktywne adresy e-mail. Można ustawić nagłówek jak

$email_header .= "Disposition-Notification-To: $from"; 
$email_header .= "X-Confirm-Reading-To: $from"; 

teraz inna metoda, aby sprawdzić to poprzez umieszczenie obrazu i można dodać skrypt do onload tego obrazu, że skrypt wyśle ​​powiadomienie do systemu, które xxx Użytkownik ma czytać mail, dzięki czemu możesz śledzić status dostarczania poczty.

W rzeczywistości, nie mogę wymyślić żadnego sposobu potwierdzenia, że ​​został dostarczony bez sprawdzania, czy zostanie odczytany, poprzez włączenie obrazu, który jest żądany z serwera i zalogowany jako dostępny, lub łącze, które użytkownik musi odwiedzić pełną treść wiadomości.

Nie są gwarantowane (nie wszystkie klienty pocztowe wyświetlają obrazy lub używają HTML), a nie wszystkie wiadomości "dostarczone" zostaną odczytane.

Choć uzyskać więcej informacji https://en.wikipedia.org/wiki/Email_tracking

+0

$ mail-> ConfirmReadingTo = "[email protected]"; jest dodawany do mojego kodu, ale wciąż nie otrzymuję żadnego potwierdzenia. jakiego rodzaju zmian wciąż mi brakuje. jeśli ktokolwiek wie, proszę, pomóż mi. –

+0

@JigarOza: możesz udostępnić swój kod tutaj, sprawię, że ten kod będzie działał dla ciebie, ponieważ bez sprawdzania kodu nie mam pojęcia, dlaczego nie otrzymujesz potwierdzenia wiadomości. –

+0

@JigarOza jak Yuvraj stwierdził w swojej odpowiedzi, to do użytkownika należy wysłanie potwierdzenia odczytu i większość użytkowników nie chce. Wiem, że rzadko je odsyłaję. Być może dlatego nie otrzymujesz potwierdzenia. Przetestuj to, wysyłając wiadomość e-mail do siebie. –

Powiązane problemy