![]() |
Rätt radbrytning i PHP mail() headers \r\n eller bara \n ??
Blir inte klok på detta. Överrallt (php.net osv) står det att man ska använda sig av \r\n och jag använder följande headers:
PHP-kod:
Jag testade att ändra \r\n till \n och då kom mitt mail fram. Så vad ska man använda?? Någon som har erfarenhet av detta? Här ett utdrag av headers och felmeddelande (vilket klagar på fel sak): Citat:
|
Använder du linux?
Jag använder: Citat:
|
http://php.net/manual/en/function.mail.php
Citat:
|
Erik, ja Linux med Debian. Jag skickar med postfix. Ja du använder ungefär samma som jag.
Anders, där citerade du helt rätt. Såg inte det innan. Men jag kommer inte att ha möjlighet att gå igenom de mails som studsar för att skicka om de med endast \n. Ska jag fortsätta köra med \r\n ? Be folk som inte får mail att byta till gmail? Finns det någon procentsiffra av hur många som har detta problemet? |
Citat:
Det är alltid i mottagarens intresse att kunna ta emot alla mail, det du kan göra är ju att maila postmastern och säga att de kanske behöver uppdatera sin mjukvara då den inte följer webbstandard. Om alla följde de standarder som finns, så skulle webben varit jävligt mycket enklare att jobba med. EDIT Glöm vad jag sa om att maila postmastern, mailet som studsar mailtvättas av Softscan i danmark, en av världens ledande mailtvättsleverantörer. Lycka till att få igenom en ändring där:p |
Citat:
Pågarna på WP har som vanligt koll, prova med PHPmailer istället. http://core.trac.wordpress.org/ticket/2603 EDIT Det här var ett spännande problem.. Hur ser din php.ini ut på din maskin? Leta efter raden sendmail_path Som jag fattar det så beror det på översättningen mellan php och sendmail/postfix.. På *nix ska det vara \n och på Windows \r\n som "line ending", då man inte egentligen inte vill ha en radbrytning på en header, utan bara ett avslut på raden så att säga. EDIT 2: http://bryanmills.net/archives/2007/...-php-and-spam/ Förklarar problemet med Postfix och att maila från PHP samt en lösning. |
Jag testade själv med att maila från en maskin till en annan, båda två kör postfix och jag har inga spamskydd på dem.
Dock så fungerade både \r\n och \n bra, den tolkade headern rätt både gångerna. Testade även med ett Gmail konto och jag fick samma resultat där. Så jag kan inte återskapa ditt fel:( |
1. Ta ett djupt andetag
2. Ladda ner phpmailer 3. Klart |
PHPMailer löser biffen åt dig.
Annars använd konstanten PHP_EOL så får du rätt radbrytning. Vid en Windows installation så är PHP_EOL == "\r\n" och i *nix så är den "\n" |
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. |
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:
|
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); 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. |
Citat:
Men som man sagt några inlägg tidigare, phpmailer löser det:) |
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.
|
Citat:
\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. |
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? |
Citat:
Postfix är ju även "sendmail kompatibel" |
Laddade ner deras Lite version (behöver inte SMTP) och gjorde en liten test till mig själv, det funkade direkt. Tack!
|
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 23:54. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson