PHP-Mail-Funktion fügt dem Nachrichtentext ein Leerzeichen hinzu

9

Ich habe ein sehr einfaches PHP-Skript, etwas wie:

%Vor%

Natürlich habe ich ein bisschen mehr Code, aber das macht nichts. Sobald ich diesen Code erstellt habe, sendet das Skript eine E-Mail an den Benutzer.

Der Eingang

Die Links sind in jeder einzelnen Zeile in Ordnung, außer dass die LETZTE den Link auf diese Weise anzeigt:

%Vor%

Es fügt einen Abstand zwischen dem Code hinzu.

Dies geschieht nur bei Hotmail. Gmail, Yahoo und alles andere funktioniert gut.

    
Andy 03.04.2012, 19:18
quelle

4 Antworten

12

Ich weiß, dass es zu spät ist, aber es gibt eine alternative Lösung, die für mich funktioniert hat:

Verwenden Sie diese Zeile, um Ihre gesamte Nachricht mit base64 zu codieren:

%Vor%

Fügen Sie dann Ihre Kopfzeile hinzu:

%Vor%

Das teilt dem Mail-Client mit, dass Ihre Nachricht base64-codiert ist.

    
karancan 07.02.2013 22:57
quelle
11

Karankans Lösung funktioniert wahrscheinlich, aber die Hauptursache ist, was Hobo sagte. Die Funktion mail fügt alle 900 Zeichen einen Zeilenumbruch ein (glaube ich). Wenn Sie also Ihre $ -Nachricht mit einer Menge $message .= "more text"; aufbauen, wird dieser Fehler auftreten, sobald diese Zeile mehr als 900 Zeichen lang ist. Es ist jedoch verwirrend, weil die Leerzeichen nur sporadisch zu sein scheinen, insbesondere wenn Sie eine HTML-Nachricht erstellen, da die Zeilenumbrüche manchmal an vollkommen benignem Ort erscheinen.

Die einfache Lösung besteht darin, am Zeilenende ein \r\n\ hinzuzufügen.

Interessanterweise funktionieren diese Formen:

%Vor%

Aber das ist nicht:

%Vor%

\r\n muss in doppelte Anführungszeichen gesetzt werden, sonst werden die Zeichen nur zum Text hinzugefügt, anstatt einen Wagenrücklauf / Zeilenumbruch zu erzeugen.

    
Mordred 26.02.2014 20:51
quelle
6

hatte das gleiche Problem und versuchte die meisten dieser Lösungen, aber es funktionierte nicht für mich. Es scheint, wenn die Linie zu lang ist, um eine Mail-Funktion hinzuzufügen, fügt sie Platz um 900 Zeichen hinzu. Die folgende Lösung zum Hinzufügen von Wordwrap funktionierte für mich.

mail ($ zu, $ subject, wordwrap ($ message), $ headers);

    
Pranjal 19.03.2015 08:36
quelle
0

Ich habe gesehen, dass sendmail Zeichen einfügt, wenn die Zeilen zu lang sind. Das ist hier nicht der Fall (da andere Clients es gut handhaben), aber ich frage mich, ob Hotmail eine Zeilenlänge hat, die Sie treffen.

Macht es einen Unterschied, wenn Sie in echo eine neue Zeile einfügen, dh

%Vor%     
Hobo 03.04.2012 19:30
quelle

Tags und Links