SwiftMailer:setEncoder()之后的奇怪换行符

时间:2016-03-07 13:37:55

标签: php yii2 swiftmailer yii2-advanced-app

设置

$test->getSwiftMessage()->setEncoder(\Swift_Encoding::get8BitEncoding());
对于我的邮件,收到的邮件里面有一条神秘的线条。

之前的例子:

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.

设置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.

这是发送邮件的完整代码:

$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('bouncedb@test.com');

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

        $result = $test->send();

这是一种非常奇怪的行为,因为当我删除一行时,换行符就会消失。

如果我的邮件是8位编码且没有不必要的换行符,我该怎么办?

1 个答案:

答案 0 :(得分:1)

这不是一种奇怪的行为,swiftmailer将使用Quoted-Printable编码格式发送您的电子邮件,而QP要求编码行不超过76个字符

  

规则#5(软线断裂)

     

Quoted-Printable编码要求编码行长度不超过76个字符。如果要使用Quoted-Printable编码对较长的行进行编码,则必须使用“软”换行符。作为编码行上最后一个字符的等号表示编码文本中的这种非重要(“软”)换行符。

RFC 1341了解详情。