2016-03-07 1 views
1

После набораSwiftMailer: странные разрывы строк после setEncoder()

$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('[email protected]'); 

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

     $result = $test->send(); 

Это очень странное поведение, потому что, когда я удалите одну линию, разрывы строк исчезнут.

Что я могу сделать, чтобы мои письма были закодированы в 8 бит и без лишних разрывов строк?

ответ

1

Это не странное поведение, SwiftMailer будет использовать Quoted-Printable формат кодирование для отправки по электронной почте, и QP требует закодированных строк быть не более 76 символов.

Правило № 5 (Soft Line Breaks)

цитируемого-Printable кодирование ТРЕБУЕТ, что закодированные строки не будет не более 76 символов. Если более длинные строки должны быть закодированы кодировкой Quoted-Printable, необходимо использовать «мягкие» разрывы строк. Знак равенства в качестве последнего символа в кодированной строке указывает на такой незначительный («мягкий») разрыв строки в закодированном тексте.

Подробнее об этом в RFC 1341.

+0

Спасибо за ссылку, я прочитаю ее. Я думал, что с setEncoder() я могу установить другую кодировку передачи, чем QP. –

 Смежные вопросы

  • Нет связанных вопросов^_^