纯文本电子邮件的意外缩进
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);
我有一个功能可以发送纯文本和 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);