ugrás a tartalomhoz

mail függvény és ami mögötte van :)

Castor87 · 2007. Május. 6. (V), 14.41
Tiszteletem!
Tökéletesen tudom használni a mail függvényt. Az oldal elküldi, cím megkapja, minden ok. Viszont a sortörés problémás.
Így néznek ki a változóim:

$cim
$targy
$uzenet
$felado

Az $uzenet változót az alábbi módon szeretném összeállítani:
$uzenet='Ez itt egy szöveg\n'.$valtozo1.'\n'.$valtozo2.'\n'.$valtozo3;

Így próbálkoztam, de megpróbáltam <br>-t is és \r\n-t. Az email megnyitásánál nincsenek törve a sorok, hanem az adott parancs megjelenik szövegként <br> vagy \n.
Érdekes hogy wordwrap -> 50-nel leellenőrzöm és 50karakterként törve vannak.
Kérdésem: mi módon tudom megtörni a sorokat $uzenet változón belül?

Köszönettel,
Castor
 
1

Dupla idézőjel

szotsaki · 2007. Május. 6. (V), 15.18
Szia!

Próbáld ki a dupla idézőjelet.
Ha csak szimpla idézőjelet használsz, a PHP nem oldja fel az escape-elt karaktereket, pl. a \n-t vagy a \r-t.

És akkor lehet egybe is írni az egészet:
"Ez itt egy szöveg\n$valtozo1\n$valtozo2\n$valtozo3";
2

idézőjelek és aposztróf

razielanarki · 2007. Május. 6. (V), 15.19
a php a szimpla aposztróffal ( ' ) körülvett sztringnél semmilyen feldoglozást nem végez, így a '\n\r'-t sem nem tekinti specálisan kezelendő karaktersorozatnak.

viszonnt idézőjellel ( " ) körülvett stringekben működnek a vezérlőkarakterek és a változóbehelyettesítés is
pl.: "üzenet\n\r$valtozo1\n\r..."
3

Aztaa

Castor87 · 2007. Május. 6. (V), 15.57
Erre rá nem jöttem volna magamtól. Nagyon köszi!! :)
4

egy kényelmesebb módszer

Marcell · 2007. Május. 6. (V), 16.20
Bár nem erre kérdeztél rá, azért megjegyezném, hogy van egy sokkal kényelmesebb mód a levéltörzs összeállítására, amit heredoc szintakszisnak hívnak. Használhatsz tabulátorokat, változókat is írhatsz bele, több sorba törheted és átlátható marad. Egy konkrét példa:
$uzenet = <<< END
Kedves $_POST[becenev]!

Örömmel fogadtuk regisztrációját, bla-bla-bla.

Az aktiváló kódja: $aktivalokod

Szeretettel ölel,
Lenor
END;

mail($cimzett, $uzenet, $header);
Ez a print() egyik fajtája, de lehet használni = vagy .= operátorral is. Annyi gubanc van csak vele, hogy a záró END; tag új sorba kell legyen, és előtte NEM lehet semmi behúzás vagy szóköz.. tehát ha katonásan behúzott kódot írsz kicsit ront az összképen, de sztem ennek ellenére érdemes használni, mert könnyű áttekinteni később a kódot.
5

hááát

hpista · 2007. Május. 6. (V), 19.38
nem lehet, hogy ezt keresed?
$uzenet = nl2br($_POST['uzenet']);
Ez ugyanis a \n karaktereket <br> alakítja.
Így a levél sorai már tördelve lesznek.