You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress的auto_core_update_email钩子中为$email['body']添加换行

解决WordPress auto_core_update_email钩子邮件正文无法换行的问题

我之前也碰到过一模一样的问题,折腾了好半天才搞清楚症结所在!核心问题是邮件内容格式和换行符不匹配,加上可能SMTP插件的设置影响,导致你用的换行符被当成纯文本显示了。下面给你两种可行的解决方案:

方案1:发送HTML格式邮件(推荐,支持更多排版)

WordPress默认的自动更新邮件可能是纯文本格式,所以你写的<br />不会被解析成换行。我们需要通过钩子手动设置邮件为HTML格式,这样HTML标签就能正常生效:

add_filter( 'auto_core_update_email', 'custom_core_update_email_content', 10, 4 );
function custom_core_update_email_content( $email, $update_type, $core_update, $update_result ) {
    // 添加HTML格式的头部信息
    $email['headers'][] = 'Content-Type: text/html; charset=UTF-8';
    
    // 编写带HTML换行的邮件正文
    $email['message'] = 'Hello<br />';
    $email['message'] .= 'Lorem Ipsum<br />';
    $email['message'] .= 'Many thanks<br />';
    $email['message'] .= 'WordPress';
    
    return $email;
}

把这段代码添加到你主题的functions.php文件里,或者用自定义代码插件添加。这样邮件客户端就会把<br />解析成换行,你还可以用<p>标签做段落分隔,排版更灵活。

方案2:发送纯文本格式邮件(保持简洁)

如果你不想用HTML格式,也可以直接用纯文本的换行符\n,但要确保邮件是纯文本格式(默认可能就是,但最好确认):

add_filter( 'auto_core_update_email', 'custom_core_update_email_content', 10, 4 );
function custom_core_update_email_content( $email, $update_type, $core_update, $update_result ) {
    // 纯文本邮件用\n换行(注意要用双引号包裹字符串,\n才会被解析)
    $email['message'] = "Hello\n";
    $email['message'] .= "Lorem Ipsum\n";
    $email['message'] .= "Many thanks\n";
    $email['message'] .= "WordPress";
    
    return $email;
}

额外注意事项

  • 检查你的SMTP插件设置:有些SMTP插件会强制把邮件设置为纯文本格式,如果是这样,即使你加了HTML头部也没用。找到插件里的“邮件格式”选项,设置为“HTML”或者“自动检测”。
  • 别用%0D%0A:这是URL编码的换行符,只有在URL参数里才会被解析,邮件正文里完全不需要用这个,直接用上面说的换行方式就行。

内容的提问来源于stack exchange,提问作者AlastairHoward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:35:55