it-swarm.com.de

HTML-Mail wird durch neue Zeilen unterbrochen

Ich verwende die Module Mail-System und Swift mailer *), um HTML-E-Mails zu senden. Anschließend habe ich ein benutzerdefiniertes Modul implementiert, um HTML-Newsletter an Benutzer zu senden E-Mails sahen nicht wie erwartet aus: Viele Stile wurden zufällig ausgewählt.

Nach dem Graben stellte ich fest, dass das Problem darin bestand, dass die E-Mail-Zeichenfolge zufällig durch neue Zeilen unterbrochen wurde: Wenn eine neue Zeile an einer kritischen Position in der Zeichenfolge angezeigt wurde, wurde die gesamte E-Mail unterbrochen. Ich musste wissen, woher diese seltsamen neuen Zeilen kamen.

Es stellte sich heraus, dass ich nichts unternehme, um dies zu erwarten.

$body = 'some html code without new lines';
$body .= 'some more html code without new lines';
$body .= 'some more and some more html code without new lines';

$params['body'] = Markup::create($body);
$language = $recipient['lang'];
$to = $recipient['mail'];
$params['to'] = $to;
$result = $mailManager->mail('custom_newsletter_mail', 'newsletter', $to, $language, $params, $from, $send_bool);

Ich weiß nicht, was Markup::create($body) tut, also habe ich versucht, es zu entfernen. Die E-Mail wurde ohne neue Zeilen zugestellt, aber der HTML-Code wurde nicht gerendert.

In der Mailsystemkonfiguration habe ich swiftmailer als FORMATTER und default PHP mailer als SENDER) festgelegt.

Dies ist die .module-Datei des benutzerdefinierten Moduls.

function custom_newsletter_mail_mail($key, &$message, $params) {
  $message['body'] = [];
  $message['subject'] = [];
  $message['format'] = 'text/html';
  $message['subject'] = $params['title'];
  $message['body'][] = $params['body'];
  $message['headers'] = array(
    'content-type' => 'text/html',
    'charset' => 'UTF-8',
    'format' => 'flowed',
    'delsp' => 'yes',
    'from' => $params['from']
  );
}

Ich habe festgestellt, dass meine Testumgebung E-Mails ohne neue Zeilen sendet (E-Mail sieht wie erwartet aus), während meine Produktionsumgebung dies nicht tut. Ich habe jede Einstellung überprüft. beide sind soweit ich das beurteilen kann identisch.

Ich habe versucht, MIME-Mail anstelle von Swift Mailer und es hat funktioniert !! Es gibt keine Zeilenumbrüche oder Leerzeichen (Die HTML-Mail sieht tatsächlich gut aus) zu verwenden, ABER MIME-Mail erreicht nur Live-Mails. Es funktioniert nicht arbeite aus irgendeinem Grund mit Yahoo oder Google Mail.

Ich muss das beheben. Ich muss diese lästigen neuen Zeilen im E-Mail-Text entfernen, was meiner Meinung nach ein Swift Mailer-Problem) ist.

2
Bassem Mohamed

Sie können keine E-Mails ohne Zeilenumbrüche senden.

Der SMTP-Standard erfordert, dass Zeilen auf 1000 Zeichen begrenzt werden. 998 wirklich, weil die Zeile mit "\r\n" Enden muss.

Wenn Sie erfolgreich vermeiden, dass Zeilenumbrüche für Sie eingefügt werden, wird Ihre E-Mail von vielen E-Mail-Servern im Internet abgelehnt. Einige werden es akzeptieren, weil sie beschlossen haben, die Standards zu ignorieren. Ratet mal, wer das macht.

Viele Server werden nicht.

Die richtige Antwort auf dieses Problem besteht darin, HTML-E-Mails mit Zeilenumbrüchen zu erstellen. Das ist wirklich einfach zu machen. Wählen Sie einige Elemente aus, die ziemlich häufig vorkommen, z. B. </tr>, Wenn Sie Tabellen und Klammern für CSS-Regelenden verwenden, und setzen Sie danach eine neue Zeile.

Das Überprüfen Ihres HTML-Codes hilft Ihnen auch dabei, sehr dumm aussehenden HTML-Text zu vermeiden, wenn Sie sich darum kümmern. Ich habe gerade die Quelle in einer Newsletter-E-Mail von TweakTown angezeigt, in der oben zunächst eine Reihe von CSS-Regeln aufgeführt sind. Dann wiederholt jede einzelne Tabellenzeile dasselbe CSS wie Inline-Stile. Ja wirklich. Warum? Kein Wunder, dass ihre Zeilen mehr als 1.000 Zeichen lang sind.

Erstellen die Leute absichtlich HTML ohne Zeilenumbrüche, um Platz zu sparen? Denn wenn ja, ist CSS-Regel-Spam das Gegenteil von Platzersparnis.

2
Zan Lynx