3

我正在使用 Swift Mailer(版本 4.1.7,这对本主题来说无关紧要),我有一个非常基本的问题。

一封“现代”电子邮件通常会重复两次内容——一次是 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 应该在每次发现消息中已经存在换行符时将其字符数重置为零。是否有可能诱发这种行为?

4

1 回答 1

0

在计算软包装的行长时,它不尊重文本中现有的硬包装。去年 Swiftmailer 5.x 上的 pull request 改变了这种情况。

于 2016-08-30T21:02:08.820 回答