Autor Zpráva
quatzael
Profil
Potřeboval bych vytvořit email, ve kterým by normálně fungovalo zobrazení HTML. Pokud možno i s CSS.

Našel jsem vlákno: ako pouzit v mail-i HTML znaky?, ale nic z toho mi nefunguje (script se zastaví).
Tori
Profil
quatzael:
nic z toho mi nefunguje (script se zastaví).
Syntaktická chyba? Nezachycená výjimka? Asi to je rozbité.
quatzael
Profil
Tori:
Nějak jsem rozchodil to první:

 $headers = "From:" . $from; 
 $headers .= "Content-type: text/html";

Ale HTML funguje to jen když tam nemám ten řádek s From:, který tam samozřejmě chci mít..

zkusil jsem mezi to dát čárku, script se nezastaví From: funguje, ale zas nefunguje to HTML..


Ve $from mám normálně adresu a před ní slovy název domény.
jenikkozak
Profil
Jednotlivé hlavičky se oddělují zalomením řádku. Na to můžeš použít předdefinovanou konstantu PHP_EOL.
Tori
Profil
quatzael:
Špatně oddělujete jednotlivé hlavičky, koukněte do FAQ: Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky., i kvůli tomu enkódování některých hlaviček.
quatzael
Profil
jenikkozak, Tori:
Supr, díky! Použil jsem to .PHP_EOL a funguje to!

Ještě mám dotaz: jaký je rozdíl mezi \n a \r? mě to připadá totožný..
Kubo2
Profil
quatzael:
To su vsetko znaky noveho riadku, akurat na rozlicnych platformach.
\n alebo LF je na UNIXE, \r alebo CR je na Macu a \r\n je CRLF a to je windows.
a pripadne ma prosim opravte ak táram.
Tori
Profil
quatzael:
jaký je rozdíl mezi \n a \r
Původně se lišily: LF = posun na další řádek ve stejném sloupci, CR = posun na první sloupec v aktuálním řádku. Na různých platformách se ale význam liší, viz wiki

edit: Ještě v souvislosti s hlavičkami e-mailů odkážu na příspěvek: Návrhy a připomínky k PHP FAQ #29
Joker
Profil
quatzael:
jaký je rozdíl mezi \n a \r? mě to připadá totožný..
No, jsou to různé znaky.
\n je znak „line feed“ (přechod nový řádek) a \r je znak „carriage return“ (návrat vozíku - převzato od psacích strojů).

V různých operačních systémech se odřádkování dělá různým způsobem, viz Kubo2 [#7], lze dát dohromady logicky znějící argumentaci na podporu každého z těch způsobů :)

Konstanta PHP_EOL vloží odřádkování odpovídající systému, ve kterém PHP aktuálně pracuje.

Nejsem si ale jistý, jestli v tomto případě je použití PHP_EOL správně.
V e-mailech se nemá používat odřádkování podle operačního systému, ale odřádkování podle standardu definujícího formát e-mailu (RFC 2821), což je CRLF.
Což by znamenalo, že v případě e-mailu se nemá použít PHP_EOL, ale "\r\n".
Zároveň jsem ale četl, že některé e-mailové servery na UNIX-like systémech samy nahrazují LF na CRLF, což by zas byl argument pro PHP_EOL.
Nejsem si jistý, jak to vlastně je správně.
Davex
Profil
Joker:
Což by znamenalo, že v případě e-mailu se nemá použít PHP_EOL, ale "\r\n".
Ano, ale záleží na tom, jaké konce řádku očekává na použitém systému odesílací program - viz Špatná příloha - Seznam. (Konstanta PHP_EOL k tomu není původně určena a jen se využívá její vlastnosti, že má čirou náhodou potřebnou hodnotu :-)

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