WordPress更新文章后发邮件 Gmail显示HTML代码而非渲染内容如何解决
解决办法
核心问题1:邮件头构造错误
你当前拼接邮件头时没有添加换行分隔符,且Content-Type缺少charset声明,导致Gmail无法识别邮件为HTML格式,直接展示源码。
核心问题2:模板读取方式错误
使用file_get_contents读取PHP模板只会返回模板的原始文本,模板内的PHP代码(比如你写的site_url()动态链接)不会被执行,会导致模板内容异常。
修复后的代码
functions.php修改:
// 启用输出缓冲区读取模板,执行内部PHP逻辑 ob_start(); include get_stylesheet_directory() . '/email/template2.php'; $email_body = ob_get_clean(); // 用数组构造邮件头,避免手动拼接换行的错误 $headers = [ 'From: Test <support@test.com>', 'Content-Type: text/html; charset=UTF-8' ]; $title = wp_strip_all_tags( get_the_title( $post->ID ) ); if ( get_post_type( $post->ID ) === 'property' ) { wp_mail( $emails, $title, $email_body, $headers ); }
模板优化注意事项:
- 所有图片路径必须替换为公网可访问的绝对路径,不能使用
images/image-5.png这类相对路径,否则Gmail无法加载图片。 - 检查模板HTML标签闭合情况,你当前模板存在
center、td标签未正确闭合的问题,修复后可避免Gmail解析异常。
内容的提问来源于stack exchange,提问作者Sanad
相关产品推荐
相关产品推荐

