Sarah West
Sarah West

Reputation: 2037

SwiftMailer: weird line breaks after setEncoder()

After set

$test->getSwiftMessage()->setEncoder(\Swift_Encoding::get8BitEncoding());

to my mails, there a mysterious line breaks inside the incoming mails.

Example before:

Hinweis zum 360° Feedback:
Das 360° Feedback ist ein Instrument zur praxisnahen und strukturierten Einschätzung von Management- und Führungskompetenzen aus unterschiedlichen Perspektiven (Vorgesetzte, Kollegen, Mitarbeiter und int./ext. Kunden). Die Vielfalt der Perspektiven vermittelt den Feedbackempfängern ein klares Bild ihrer persönlichen Stärken und Entwicklungspotenziale, aus der Sicht der ausgewählten Feedbackgeber.

And after setting addEncoder():

Hinweis zum 360° Feedback:
Das 360° Feedback ist ein Instrument zur praxisnahen und strukturierten 
Einschätzung von Management- und Führungskompetenzen aus unterschiedlichen 
Perspektiven (Vorgesetzte, Kollegen, Mitarbeiter und int./ext. Kunden). Die 
Vielfalt der Perspektiven vermittelt den Feedbackempfängern ein klares Bild 
ihrer persönlichen Stärken und Entwicklungspotenziale, aus der Sicht der 
ausgewählten Feedbackgeber.

Here's my full code to send mails:

$test = Yii::$app->mailer->compose(['text' => 'text_mail'], ['content' => $content])
            ->setCharset('utf-8')
            ->setFrom('xxx')
            ->setTo($to)
            ->setSubject($subject);

        if ($priority == 1) {
            $test->getSwiftMessage()->setPriority(2);
        }
        if ($sensitivity != "") {
            $test->getSwiftMessage()->getHeaders()->addTextHeader('Sensitivity', $sensitivity);
        }

        // die Mail ID in den Header setzen
        $test->getSwiftMessage()->getHeaders()->addTextHeader('transaction_id', $mail_id);
        $test->getSwiftMessage()->setEncoder(\Swift_Encoding::get8BitEncoding());

        // Bounce-Adresse setzen
        $test->getSwiftMessage()->setReturnPath('[email protected]');

        // UTF-8 setzen
        $test->getSwiftMessage()->getHeaders()->setCharset('utf-8');
        $test->getSwiftMessage()->setCharset('utf-8');

        $result = $test->send();

It's a very strange behaviour, because when I remove the one line, the line breaks disappear.

What can I do to have my mails 8bit encoded and without that unnecessary line breaks?

Upvotes: 1

Views: 480

Answers (1)

soju
soju

Reputation: 25312

It is not a strange behavior, swiftmailer will use Quoted-Printable encoding format to send your email, and QP requires that encoded lines be no more than 76 characters long.

Rule #5 (Soft Line Breaks)

The Quoted-Printable encoding REQUIRES that encoded lines be no more than 76 characters long. If longer lines are to be encoded with the Quoted-Printable encoding, 'soft' line breaks must be used. An equal sign as the last character on a encoded line indicates such a non-significant ('soft') line break in the encoded text.

Read more about this in RFC 1341.

Upvotes: 1

Related Questions