Autor Zpráva
Vendelína
Profil *
Potřebovala bych poradit. Mám script na odesílání emailu i včetně headers a bohužel mě to píše chybu :( Email se sice odešle, ale s tou chybou si nevím rady. Pomůžete?

Chyba:
ALERT - mail() - double newline in headers, possible injection, mail dropped (attacker '81.22.63.190', file '/home/html/example.com/public_html/odeslat_email.php', line 79)

PHP:
$body = '
<html><body>
Ahoj kamaráde,<br>posílam ti zkušební email.
</body></html>';
$muj_email = "demo@example.com";
$to = "kamarad@example2.com";
$headers  = 'From: example.com <'.$muj_email.">\n"; 
$headers .= 'To: '.$to."\n";
$headers .= 'MIME-Version: 1.0'."\n"; 
$headers .= 'Content-Type: text/HTML; charset=UTF-8'."\n";
$headers .= 'Content-Transfer-Encoding: 8bit'."\n";
$headers .= $body . "\n";

mail("", $subject,"", $headers); 



Na internetu jsem se nyní dočetla, že by mohlo stačit dát před mail() funkci rtrim, tj. $headers = rtrim($headers);. Někdo zase radí nedávat všude \n \n, ale používat \n a \r ... jenže já to mám v HTML a používám <br>.

Nevím, jsem z toho nějaká zmatená :(
nethor
Profil
$body nepatří do hlavičky, ale jako 3. parametr fce mail().
Popisovaná chyba vzniká asi tady:
$body = '    // tohle zůsobí dvojitý nový řádek
<html><body> ...

// správně:

$body = '<html><body> ...


Pro odesílání mailů používám třídu PHPMailer (class.phpmailer.php) (zagoogli) , je to pohodlnější.
Tori
Profil
Vendelína:
Zpráva by imho neměla být mezi hlavičkami, ale jako 3.parametr fce mail, a adresát má být první parametr.
Koukněte i do Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0