3

私は Swift Mailer (バージョン 4.1.7、このトピックには関係ありません) を使用していますが、非常に基本的な質問があります。

「最新の」電子メール メッセージは、通常、コンテンツを 2 回繰り返します。1 回目は HTML で、ほとんどの人は派手なブラウザ ベースのメール閲覧アプリで読みます。もう 1 回は、古いまたは単純なリーダーを使用している人々のためにプレーン テキストです。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 のプル リクエストで変更されました。

于 2016-08-30T21:02:08.820 に答える