纯文本电子邮件的意外缩进

Unintended Indents with Plain Text Email

我有一个功能可以发送纯文本和 HTML 电子邮件。编码时,我缩进代码以获得正确的嵌套。请注意下面的两个代码字符串。

$plain_text = '
*Hi ' . show_user_name($user_id) . '. Thanks for signing up!*
';

$plain_text = '
    *Hi ' . show_user_name($user_id) . '. Thanks for signing up!*
';

当第二封邮件作为纯文本电子邮件发送时,“*Hi...”行缩进。

如何防止这种情况发生?

简而言之,它是缩进的,因为你缩进了它!

在纯文本电子邮件中(与 HTML 不同),白色 space 被保留并且很重要,因此如果您不想前导 space,请将它们从您的内容:

$plain_text = preg_replace('/^ +/m', '', $plain_text);

您需要 m 修饰符将前导 space 剥离应用于正文中的每一行。

或者,首先不要缩进 - 代码的缩进不必与生成的文本格式相关:

$plain_text =
    '*Hi ' . show_user_name($user_id) . '. Thanks for signing up!*';

如果您使用制表符进行缩进,您也可以将其过滤掉:

$plain_text = preg_replace('/^[ \t]+/m', '', $plain_text);