php - PHP邮件不显示正文,头部标签
问题描述
我知道有很多关于不使用 .html 显示的 html 标签的类似问题mail()
。我已经阅读了一堆,看看它是否提到了我的具体问题,但我找不到任何东西。
我的问题不是 HTML 标签无法正确呈现,而是,<html>
和标签完全丢失。所有其他标签都会正确显示。我已经通过更改标题进行了研究和测试,但我总是得到相同的结果。如果我删除标题,电子邮件将显示所有标签,但以常规文本显示。当我添加标题时,4 个主要标签消失了。<head>
<title>
<body>
我不确定它是 PHP 的东西还是电子邮件客户端的东西。在 Gmail 上,所有这 4 个标签都消失了,但在 Yahoo 上我确实得到了title
标签。
我检查以确保mail.add_x_header
已设置并且确实如此。
我在一个 Joola 网站上工作,Joomla 也提供了一个发送电子邮件的类。我首先尝试使用它,我得到了相同的结果。这就是我尝试使用 PHP 的邮件功能的原因。
下面是我正在使用的代码。我从一个教程网站得到它,我尝试将标题更改为不同的设置,但我总是得到相同的结果。
$to = "test_1@yahoo.com";
$subject = "My HTML email test.";
$headers = "From: info@test.org\r\n";
$headers .= "Reply-To: info@test.org\r\n";
$headers .= "Return-Path: info@test.org\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$message = "<html><body>";
$message .= "<h1> This is a test </h1>";
$message .= "</body></html>";
if ( mail($to,$subject,$message,$headers) ) {
echo "The email has been sent!";
`enter code here`} else {
echo "The email has failed!";
}
解决方案
这大概和预期的一样。电子邮件客户端尝试显示多封电子邮件,但不是使用大量 iframe 或类似的东西,而是解析代码并将其剥离到相关部分。
所以他们会削减<html>
;<title>
没有意义,因为该页面有自己的页面标题(电子邮件客户端页面),除非他们想更改每封打开的电子邮件的标题,例如;<body>
通常会变成一个<div>
;并且<head>
也将得到解释。
<head>
这是关于随机电子邮件的 Gmail 网络邮件部分:
<div id=":csl" class="a3s aXjCH "><u></u>
<div style="margin: 0px; padding: 0px; min-width: 100%; background-color: rgb(255, 255, 255);"><!-- This is my <body> -->
雅虎也一样:
<div data-test-id="message-body-container"><div data-test-id="message-view-body" class="I_52qC D_FY W_6D6F"><div class="X_6MGW"></div><div class="msg-body P_wpofO mq_AS" data-test-id="message-view-body-content"><div class="jb_0 X_6MGW N_6Fd5"><div><div id="yiv8851120227">
<title></title>
<style type="text/css">
... <!--lots of styles here -->
</style>
<div> <!--Used to be <body> -->
Android 上的 Gmail 应用程序允许做更多的事情:
<html><head>
<meta id="meta-viewport" name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=2" data-zoom-on="maximum-scale=2" data-zoom-off="user-scalable=no">
<link rel="stylesheet" type="text/css" href="https://mobile-webview.gmail.com/android_asset/conv.css">
<style> .spacer{display: none !important }
img[blocked-src] { border: 1px solid #CCCCCC; }
</style>
<style> .spacer{display: none !important }
</style>
</head>
<body style="margin: 0 16px;"><!--This was inserted-->
<script type="text/javascript">
var JS_TOKEN = 'TSONS4YTXAF2U436RLHPASX5HN3JIU3O';
window.ConversationView.createTracingInstant(JS_TOKEN, "BODY_PARSE_STARTED");
</script>
<div id="conversation-header" class="spacer" style="height: 116px;"></div>
<div id="conversation-promotion" class="spacer" style="height: 0px;"></div>
<div id="m#msg-f:1671067648779872745" class="mail-message expanded">
<div class="mail-message-header spacer" style="height: 80px;"></div>
<div class="mail-message-content collapsible zoom-normal mail-show-images " style="display: block; margin: 16px 0; user-select: auto; -webkit-user-select: auto;"><div class="clear"><u></u>
...
<div style="margin:0px;padding:0px;min-width:100%;background-color:#ffffff"> <!--Used to be <body>-->
...
推荐阅读
- angularjs - 如何在 AngularJs Leaflet 中使用磁贴提供程序?
- google-cloud-platform - 从参考 CSV 文件更新大查询表
- wcf - Serilog:调用 wcf 服务时创建多个日志文件
- python - Python:计算二维列表列中元素的出现次数
- python - Pandas:每列值的 nan 百分比
- c++ - GCC 5.4 的 C++ 模板变量特化
- arrays - 使用 Lodash 的 For Loop 替代方案(React Native)
- oracle - 在 Oracle Golden Gate 上按序列生成 ID
- java - AWS S3 使用 transferManager 通过发送部分进行分段上传
- python - selenium.common.exceptions.TimeoutException 错误通过 Selenium 和 Python 使用 WebDriverWait 和 expected_conditions