2013-03-28 1 views
3

Я использую Swift Mailer (версия 4.1.7, что не должно иметь значения для этой темы), и у меня есть очень простой вопрос.При использовании Swift Mailer, как я могу получить контроль над разрывами строк в текстовой/простой версии сообщения?

«Современное» сообщение электронной почты обычно повторяет контент дважды - один раз в HTML, который большинство читает в своих причудливых приложениях для чтения почты на основе браузера, и один раз в обычном тексте для тех людей, которые используют старые или простые читатели. В Swift, это легко создать обе версии следующим образом:

$message->setBody($plaintextMessage, 'text/plain'); 
$message->addPart($htmlMessage, 'text/html'); 

Проблема у меня в том, что мой обычный текст сообщения ($plaintextMessage выше) нарушаются на линии, игнорируя при этом новые строки уже присутствует в $plaintextMessage. Это подходит, если в сообщении нет новых строк. Например, если я кормлю его это:

$plaintextMessage = 'This is a long-ish line, which we expect to be broken after about 72 characters. It is a good behavior, appropriate in most instances.'; 

тогда я получаю это:

This is a long-ish line, which we expect to be broken after about 72 cha= 
racters. It is a good behavior, appropriate in most instances. 

Это прекрасно, как ожидается, и так далее. Однако, если я что-то вроде этого:

$plaintextMessage = implode("\n", array('This is a series', 
             'of short lines', 
             'which should not be broken.', 
             'They include their own', 
             'newlines, which should be respected', 
             'and preserved')); 

то есть уже прекрасно символы новой строки в сообщении. К сожалению, Swift, кажется, игнорирует их и выводит это:

This is a series 
of short lines 
which should not be broke= 
n. 
They include their own 
newlines, which should be respecte= 
d 
and preserved 

Конечно, я понимаю, что современная почтовая программа удалит лишние разрывы строк и знаков равенства, но и весь смысл иметь простой текстовый вариант из что люди, использующие более старые почтовые программы, которые не понимают этот синтаксис, все равно могут читать сообщение без особого уродства.

Является ли это настройкой в ​​Swift? Пока что единственное, что я думал сделать, это установить длину строки на действительно высокий счетчик символов (дольше, чем мое сообщение) в качестве обходного пути, что не позволяет Swift делать какие-либо разрывы строк. Мне кажется, однако, что Swift должен сбрасывать свой счетчик символов до нуля каждый раз, когда он находит разрыв строки в сообщении. Можно ли вызвать такое поведение?

+0

Почему бы не удалить все новые строки, а затем использовать свою собственную функцию? – 2013-03-28 05:18:12

ответ

0

Это не касается существующих жестких оберток в тексте при расчете длины линии для мягкой упаковки. Это было изменено с помощью pull request on Swiftmailer 5.x last year.