2011-12-03 23 views
18

próbuję wysłać wiadomość e-mail z mojego PHP:Zmień nazwę nadawcy poczty php zamiast [email protected]

$to = '[email protected]'; 
    $email_from = "[email protected]"; 

    $full_name = 'Suraj Hazarika'; 
    $from_mail = $full_name.'<'.$email_from.'>'; 



    $subject = "testing sender name"; 
    $message = ""; 
    $message .= ' 
      <p><strong>This is only a test . Please do not reply.</strong><br /> 
    '; 
    $from = $from_mail; 

    $headers = "" . 
       "Reply-To:" . $from . "\r\n" . 
       "X-Mailer: PHP/" . phpversion(); 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";   
    mail($to,$subject,$message,$headers); 

śledzę samouczka PHP E-mail Form Sender Name Instead Of E-mail? ale nadal jestem coraz e-maile z nazwy nadawcy z nazwa hosta.

 From        Date    Subject 
[email protected] Fri, 11:24 pm  testing sender name 
[email protected] Fri, 11:24 pm  testing sender name 
+0

Możecie zajrzeć do wstrzykiwań header ataków. Twój kod nie jest bezpośrednio podatny na ataki, ale pamiętaj o tym. – tangrs

Odpowiedz

20

Wystarczy tylko użyć $from w nagłówku Reply-To. Jeśli chcesz, aby znajdował się w nagłówku From, musisz ustawić go w nagłówku From.

umieścić coś takiego przed komendą mail():

$headers .= 'From: ' . $from . "\r\n"; 
0

Spróbuj dodać From: do nagłówka

$headers = "" . 
      "Reply-To:" . $from . "\r\n" . 
      "From:" . $from . "\r\n" . 
      "X-Mailer: PHP/" . phpversion(); 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

Niektóre MTA może zmienić/zignorować tę definicję, aby uniknąć spamu, i zastąpić z użytkownikiem SMTP skonfigurowany w php.ini

15

Przyszedłem na to pytanie szukając czegoś innego, ale z podobnymi słowami, więc oto jak zrobić to, czego szukałem:

W nagłówku from dodaj w nawiasach ostrych i "nazwa nadawcy" poza nim.

from: Don Draper <[email protected]>\n 

Chciałem powiedzieć Don Draper skrzynkę zamiast don.draper i to w jaki sposób to zrobić.

4

Możesz także spróbować dodanie From adres na pocztę w „kopercie” wykorzystując piąty parametr w mail() funkcji PHP:

mail($to_mail, $subject, $message, $headers, "-f$from_email"); 

referencyjny here.

odniesienia dotyczące nagłówków pocztowych i kopert here

pamiętać, że niektóre konfiguracje serwera mogą nie pozwalają na takie lub rzucać ostrzeżenie, zależnie od ich konfiguracji i/lub konfiguracji agenta transferowego poczty. This answer mówi o aktualizacji "zaufanych użytkowników sendmaila" w odniesieniu do tego.

+0

Nic nie wymusza, nagłówek 'From:' ustawia nadawcę MIME, natomiast parametr dodatkowy '-f' ustawia nadawcę koperty. Jest to niedozwolone w trybie awaryjnym. – LeonardChallis

+0

@LeonardChallis Całkiem dobrze; Nie w pełni rozumiem różnicę między nagłówkami i kopertami.Zaktualizowałem swoją odpowiedź z (mam nadzieję) lepszym, jaśniejszym wyjaśnieniem i referencjami. – indextwo

+0

Wygląda dobrze :) dzięki – LeonardChallis

0

Dodaj tę linię przed linią nagłówka

$headers .= "From: Your Name <[email protected]> \r\n"; 

Więc kod będzie

$headers = ""; 
$headers .= "From: WIFI Metropolis <[email protected]> \r\n"; 
$headers .= "Reply-To:" . $from . "\r\n" ."X-Mailer: PHP/" . phpversion(); 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";   
mail($to,$subject,$message,$headers); 
Powiązane problemy