PHP获取HTML文件内容后如何转为纯文本通过邮件发送
问题根因
你用<pre>、<code>包裹后不生效,核心原因是$html变量中自带的HTML标签会被邮件客户端直接解析渲染,不会作为文本展示。
方案1:发送HTML格式邮件
需要先对$html中的HTML特殊字符做实体转义,PHP内置的htmlspecialchars()函数可以完成这个操作,它会把<、>、&、引号等特殊字符转换为HTML实体,避免被客户端解析为标签。
示例代码:
ob_start(); include ("myFile.html"); $html = ob_get_contents(); ob_end_clean(); // 关闭输出缓冲,避免多余内容输出 // 转义HTML特殊字符,ENT_QUOTES参数会同时转义单、双引号 $escaped_html = htmlspecialchars($html, ENT_QUOTES); // 用pre包裹保留原始换行、缩进格式 $mail_body = "<pre>" . $escaped_html . "</pre>";
额外注意:发送邮件时需要将邮件头部的Content-Type设置为text/html; charset=utf-8,同时声明UTF-8编码避免多语言乱码。
方案2:直接发送纯文本邮件
如果不需要在邮件里加其他HTML格式内容,可以直接将邮件的Content-Type设置为text/plain; charset=utf-8,此时不需要做任何转义,也不用加<pre>、<code>标签,直接把$html作为邮件内容发送即可,纯文本类型的邮件会原样展示所有内容,不会解析任何HTML标签。
内容的提问来源于stack exchange,提问作者Trombone0904
相关产品推荐
相关产品推荐

