退信提示'550 5.6.11 BareLinefeedsAreIllegal'或'message contains bare linefeeds',邮件被 Exchange/Outlook 拒收,怎么修?
37
退信提示"550 5.6.11 BareLinefeedsAreIllegal"或"message contains bare linefeeds",邮件被 Exchange/Outlook 拒收,怎么修?
▼
原因
邮件正文行尾格式不符合 SMTP 规范。SMTP 要求每行以 CR+LF(
,回车+换行)结尾,但你的邮件用了纯 LF(
)——俗称"裸换行"。常见于 Linux/Unix 系统或程序直接用
而非
拼接邮件内容。Exchange Online 和部分严格 MTA 会直接拒收。
操作
1. 代码中确保邮件正文每行以
结尾。
2. PHP:$body = preg_replace('/(?<!\r)\n/', "\r\n", $body);
3. Python:body = body.replace('\n', '\r\n') — 注意不要在已含
的数据上再运行。
4. Postfix 自建服务器:在 main.cf 加 smtp_fix_bare_newlines = yes 自动修复。
5. 确认邮件库(PHPMailer、nodemailer 等)为最新版本。
参考:RFC 5321 §2.3.7 / §4.1.1.4(CRLF 行尾要求)· Microsoft Learn NDR 5.6.11
