PHP problém s mail()

MyEgo.cz

home foto blogy mywindows.cz kontakt

PHP problém s mail()

PHP 13.11.04

Tedy, on to možná není ani tak problém s PHP, jako takový zajímavý problém (či bug?) skriptu. Podívejte se na tento kód:

$to = 'info@hulan.info';
$subject = 'New password requested';
$message = 'Hello Radek Hulan,'."\n".
	'You have requested to have a new password '."\n".
	'assigned to your account in the '."\n".
	'discussion forum at http://forum.blogcms.com/. '."\n".
	'Your new password is: abcdefgh';
$headers = 'From: BLOG:CMS '."\n".
	'Date: Sat, 13 Nov 2004 12:26:14 +0100'."\n".
	'MIME-Version: 1.0'."\n".
	'Content-transfer-encoding: 8bit'."\n".
	'X-Mailer: PunBB Mailer'."\n".
	'Content-Type: text/plain; charset=utf-8';

A nyní tento email pošleme:

mail($to, $subject, $message, $headers);

Vtip je v tom, že u mě na SUSE 9.1 s PHP 5.0.2 to email posílá, na xhost.cz s PHP 4.3.9 to email, rovněž posílá, ale na www.tojeono.cz s PHP 5.0.2 to email nepošle. Řešil jsem to s Ondřejem Svobodou asi hodinu, než nám to došlo, a přitom je to tak triviální…

A víte proč?


Komentáře

  1. 1 fantommax 13.11.04, 01:11:12
    FB

    já si myslím že to není chyba php, ale sendmailu (případně jiného smtp), který odesílá emaily, ne php.

  2. 2 ondra 13.11.04, 01:11:26
    FB

    Hlavicka From musi byt ve tvaru:
    From: "BLOG:CMS" <info@hulan.info> - tzn. jmeno odesilatele musi byt v uvozovkach.
    viz: http://www.faqs.org/rfcs/rfc733.html...
    <strip>
    Once header fields have been unfolded, they may be viewed as being composed of a field-name followed by a colon (":"), followed by a field-body. The field-name must be composed of printable ASCII characters (i.e., characters which have values between 33. and 126., decimal, except colon) and LWSP-chars.
    </strip>

  3. 3 mirrda 13.11.04, 01:11:40
    FB

    Nějaké nastavení serveru?

  4. 4 sXmax 13.11.04, 01:11:57
    FB

    V php.ini MUSÍ být nastavena defaultní odchozí adresa, jinak ten skript prostě nefunguje. Taky jsem se na tom pěkně dlouho zasekl.

  5. 5 Radek Hulán 13.11.04, 03:11:13
    FB

    [2] jasně, toto je ono, a děkuji, to je moc dobré vědět, a troufnu si tvrdit, že to pár lidem ušetří hodně práce :)

    Já to ošetřil provizorně takto: $from = str_replace(":",'\:',$from);..

  6. 6 Michal Tulacek 13.11.04, 08:11:35
    FB

    Tipoval jsem vsechno, ale tohle ne... po tom co jsem studoval format hlavicek emailu,ktery je podle me prezitkem doby kdy se maily rucne busily dalnopisem mam k teto benevolentni norme docela odpor... co ta obsahuje vyjimek, synonym v prikazech, domplnujiciho znaceni apod, to neni normalni :D

  7. 7 Jakub 26.11.04, 04:11:56
    FB

    Ještě je potřeba dát pozor na rn. Podle RFC musí být řádky zprávy (a hlaviček) oddělený rn. Na Unixu to ale obvykle funguje pouze s n a s rn naopak ne. Důvod je ten, že vytvořenou zprávu dostane obvykle řádkový příkaz sendmail, který n na rn převede. Ve Windows je naopak potřeba místo n psát rn.

    Viz také bug http://bugs.php.net/bug.php?id=25373...