WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Ny rad @ PHP mail() (https://www.wn.se/forum/showthread.php?t=1047895)

em0c4tz 2011-04-27 14:41

Ny rad @ PHP mail()
 
Hej.

Jag försöker få mitt kontaktformulär att fungera. När en användare gjort en ny rad i textrutan så blir meddelandet i mejlet som skickas iväg "\r\n" istället för nya rader.

Exempel:
Hej.
Jag heter Karl Karlsson och bor i Karlstad.
Jag gillar päron
Mvh

Resultat:
Hej.\r\nJag heter Karl Karlsson och bor i Karlstad.\r\nJag gillar päron\r\nMvh

#Server
Webbhotell: Binero
Plattform: LINUX
PHP v.: 5.2.14

#Header
$header = 'Content-Type: text/html; charset="UTF-8"' . "\r\n";
$header .= 'MIME-Version: 1.0' . "\r\n";
$heades .= 'X-Mailer: PHP/".phpversion() . "\r\n";
$header .= 'From: Mail Inbox <[email protected]>' . "\r\n";
$headers .= 'Cc: Vatten Melon <[email protected]>' . "\r\n";

#Message
$message = preg_replace("#(?<!\r)\n#si", "\r\n", $_POST['msg']);

Kan ni se något som ska ändras, tas bort eller läggas till?

Tacksam för svar!

hnn 2011-04-27 15:23

Om du ersätter \r\n med PHP konstanten: PHP_EOL istället?

Annars verkar det som att du kör:
Kod:

echo '\r\n';
istället för:
Kod:

echo "\r\n";
---

Däremot tycker jag att du ska skrota det "manuella" kodandet och köra med phpMailer (http://phpmailer.worxware.com/) istället. Den funkar out-of-the-box.

em0c4tz 2011-04-28 09:47

Citat:

Ursprungligen postat av Kjette (Inlägg 20403362)
Se om du får nytta av det här som vi har utvecklat:

http://kjette.se/uploads/FormMail.zip

Nej, det hjälpte mig ingenting. Men väldigt bra jobbat med projektet!

em0c4tz 2011-04-28 09:59

Jag löste det genom denna funktion:
'str_replace('\r\n', '<br />', $_POST['msg']);

Tack för alla svar!

Jine 2011-04-28 12:43

Finns en färdig sådan funktion i PHP.. nl2br()

hnn 2011-04-28 13:07

Citat:

Ursprungligen postat av Jine (Inlägg 20403481)
Finns en färdig sådan funktion i PHP.. nl2br()

Inte riktigt.

Syns \r\n i klartext, så funkar inte nl2br då den konverterar \n\r's motsvarande i ASCII kod (ASCII kod 10 och 13).

Jine 2011-04-28 14:19

Eftersom "\n\r" (med just ") är just chr(10) & chr(13) så kommer nl2br fungera i hans exempel.

Enligt den koden han använder;
$message = preg_replace("#(?<!\r)\n#si", "\r\n", $_POST['msg']);

hnn 2011-04-28 14:21

Citat:

Ursprungligen postat av Jine (Inlägg 20403496)
Eftersom "\n\r" (med just ") är just chr(10) & chr(13) så kommer nl2br fungera i hans exempel.

Enligt den koden han använder;
$message = preg_replace("#(?<!\r)\n#si", "\r\n", $_POST['msg']);

Om du läser vad han skrivit, så är det ju just det som inte sker :)

Jine 2011-04-28 14:27

Antagligen pga. han skickar mailet som HTML, och som du kanske vet så syns inte \r\n i HTML (om man inte visar källkod)

Nåväl, TS har löst det (på enligt mig - fel sätt) någonstans i hans kod blir det tokigt med radbrytningen - problemet borde lösas genom att rätta till det så (om det nu inte går) han använder nl2br() istället.

hnn 2011-04-28 14:34

Citat:

Ursprungligen postat av Jine (Inlägg 20403500)
Antagligen pga. han skickar mailet som HTML, och som du kanske vet så syns inte \r\n i HTML (om man inte visar källkod)

Nåväl, TS har löst det (på enligt mig - fel sätt) någonstans i hans kod blir det tokigt med radbrytningen - problemet borde lösas genom att rätta till det så (om det nu inte går) han använder nl2br() istället.


rätt sätt hade ju varit:

$string = str_replace(array('\r\n', '\n\r'), "\r\n", $var);

$string = nl2br($string)
;)


Alla tider är GMT +2. Klockan är nu 03:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson