WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Rätt radbrytning i PHP mail() headers \r\n eller bara \n ?? (https://www.wn.se/forum/showthread.php?t=1042593)

Jake.Nu 2010-06-19 08:57

Felet du får är

"Illegal MIME chars found in header:
<From: "N.nu Support" <[email protected]>__>"

Koden du postade i ditt första inlägg saknar två st. avslutande CRLF innan ditt innehåll.
Vad "__>" menas med är svårt för mig att avgöra (jag använder inte Postfix) men kanske är det just där som felet ligger (i den koden som du faktiskt använder i scriptet) eller så visar dom bara en del av headern där felet ligger..

Testa detta och se om det gör skillnad..
PHP-kod:

<?php
$header 
"From: \"Namn\" <[email protected]>\r\n";
$header.= "Reply-To: <[email protected]>\r\n";
$header.= "Content-Type: text/plain; charset=utf-8\r\n";
$header.= "\r\n";
$header.= "Detta är ett meddelande i textformat";

mail("[email protected]""Subject"""$header);
?>

Standarden säger att alla _headers_ i ett meddelande skall avslutas med CRLF (alltså \r\n) så det skall du alltid använda.

SimonP 2010-06-19 09:17

Använd bara \n , då får du flest "fungerade" mail. Även om man egentligen borde följa RFC:n så gör inte PHP själva det. Syns i källkoden till PHP (mail.c):
Kod:

                fprintf(sendmail, "To: %s\n", to);
                fprintf(sendmail, "Subject: %s\n", subject);
                if (headers != NULL) {
                        fprintf(sendmail, "%s\n", headers);
                }
                fprintf(sendmail, "\n%s\n", message);

De lägger på \n och inte \r\n.
För det mesta är PHP-manualen bra men i just detta fall är den lite missvisande.

OBS! Jag pratar om PHP som körs på Linux servrar.

abergman 2010-06-19 13:03

Citat:

Ursprungligen postat av jonny (Inlägg 20360031)
I normalfallet ska faktiskt "\n" även omfatta "\r".
Jag uppfattar för övrigt texten om "Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used)." som att det är ett problem med AVSÄNDANDE MTA och inte mottagande.

Jag har uppfattat det likadant, jag vill dock hävda att postfix inte borde gå under kategorin "poor quality", så man kan ju tycka att det inte borde vara ett problem.

Men som man sagt några inlägg tidigare, phpmailer löser det:)

jonny 2010-06-19 22:03

Det intressanta är väl att "\n" ska tolkas som "new line" vilket bör översättas till CR (Carriage Return) och LF (Line Feed) automatiskt.

qson 2010-06-19 22:11

Citat:

Ursprungligen postat av jonny (Inlägg 20360092)
Det intressanta är väl att "\n" ska tolkas som "new line" vilket bör översättas till CR (Carriage Return) och LF (Line Feed) automatiskt.

\n ska väl tolkas som ASCII 10 (vilket motsvarar LF/Line Feed).
\r tolkas som ASCII 13 (CR/Carriage Return)

När jag har använt PHP:s inbyggda mailfunktion så har jag kört med \r\n och det har funkat prima. Har iofs. testat båda varianter och det har funkat.

Jag kan rekommendera PHPMailer, som skall sköta detta med headers automatiskt, och förhoppningsvis inte med PHP:s inkonsekventa användning.

Jim_Westergren 2010-06-21 12:02

Hej!

Jäkla bra forum. Skriver en svår fråga en fredag eftermiddag och man är tillbaka på jobb på måndag med en massa bra svar och input, suveränt.

Jag har kollat lite närmare nu. Har totalt fått 3 sådana är studsade mails sedan jag började kolla upp vilka mails som studsar och alla dessa 3 kommer från softcom.dk.

Tittade lite på PHPMailet och det är verkligen intressant, speciellt eftersom jag nu snart vill använda HTML i mina nyhetsbrev. Håller just på att sätta min i det. Den funkar väl med postfix som jag använder nu?

studiox 2010-06-21 12:07

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20360247)
Hej!

Jäkla bra forum. Skriver en svår fråga en fredag eftermiddag och man är tillbaka på jobb på måndag med en massa bra svar och input, suveränt.

Jag har kollat lite närmare nu. Har totalt fått 3 sådana är studsade mails sedan jag började kolla upp vilka mails som studsar och alla dessa 3 kommer från softcom.dk.

Tittade lite på PHPMailet och det är verkligen intressant, speciellt eftersom jag nu snart vill använda HTML i mina nyhetsbrev. Håller just på att sätta min i det. Den funkar väl med postfix som jag använder nu?

PHPMailer fungerar med både en lokal MTA och en extern SMTP server (även på Linux, vilket Mail() inte klarar av, en av anledningarna jag gillar det)

Postfix är ju även "sendmail kompatibel"

Jim_Westergren 2010-06-21 13:14

Laddade ner deras Lite version (behöver inte SMTP) och gjorde en liten test till mig själv, det funkade direkt. Tack!

Jim_Westergren 2010-06-22 11:23

Tänkte återkomma här med uppdatering för de som är intresserade.

- Implementeringen av PHPMailer Lite var mycket enklare än jag trodde. Gjorde även en enkel HTML-mall som jag nu använder i mailen - ser mycket snyggare ut och funkar väldigt bra.

- Fick lite fler negativa poäng av spam assasin pga HTML men det var så lite så inget att oroa sig för.

- Jag skickade välkomstmailet med verifieringskod till mina 3 användare som har mail via softcom.dk och nu studsar de inte längre vilket är jättebra.

- Gissa vilken radbrytning PHPMailer använder som default? Endast \n och inte \r\n ...

- Känns tryggt att använda en klass som tusentals andra använder.

Tack för knuffen från er som fick mig att gå över till PHPMailer.


Alla tider är GMT +2. Klockan är nu 15:35.

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