为什么不';我的PHP联系人发送的电子邮件不是HTML格式的吗?
我正在尝试制作自己的自定义联系人表单。在对其进行改进测试时,我发现电子邮件不是HTML格式的。我不知道为什么会发生这种情况,但我想我一定是做错了什么,因为我的电子邮件服务提供商从其他来源接收HTML格式的电子邮件。我认为messagebody变量中的HTML代码也是正确的,因此它必须与headers变量或我设置它的方式有关 编辑:与别人建议的不同,使用样式标签不是我的问题,因为我使用的不是Gmail(不接受它们),而是Outlook(接受它们)为什么不';我的PHP联系人发送的电子邮件不是HTML格式的吗?,php,html,forms,html-email,contact-form,Php,Html,Forms,Html Email,Contact Form,我正在尝试制作自己的自定义联系人表单。在对其进行改进测试时,我发现电子邮件不是HTML格式的。我不知道为什么会发生这种情况,但我想我一定是做错了什么,因为我的电子邮件服务提供商从其他来源接收HTML格式的电子邮件。我认为messagebody变量中的HTML代码也是正确的,因此它必须与headers变量或我设置它的方式有关 编辑:与别人建议的不同,使用样式标签不是我的问题,因为我使用的不是Gmail(不接受它们),而是Outlook(接受它们) if($\u POST['Submit'])){
if($\u POST['Submit'])){
如果(空($_POST['Phone'])){
$content=”
发件人:
$name
电邮:
$email
$message
.黑体字{
字体大小:粗体;
}
";
}
以上是我的表单操作PHP代码的一部分。其余部分是对每个输入的一些正则表达式验证,并作为对这些输入的响应进行响应。提交的内容被发送到Outlook电子邮件地址,我知道该地址与头部或正文中的样式标记兼容。我做错了什么
客户实际收到的电子邮件样本:
<html>
<head></head>
<body>
<div class='boldtext'>From:</div>
John Doe
<br/>
<div class='boldtext'>E-mail:</div>
email@email.com
<br/><br/>
This is a message.
<style>
.boldtext {
font-weight: bold;
}
</style>
</body>
</html>
发件人:
无名氏
电邮:
email@email.com
这是一条信息。
.黑体字{
字体大小:粗体;
}
据我所知,您不能像提供的那样在电子邮件中添加样式,但您可以提供内联样式,仅用于在电子邮件中添加样式。请执行以下示例代码
<div style="font-weight:bold;">From:</div>
$name
<br/>
<div style="font-weight:bold;">E-mail:</div>
$email
<br/><br/>
<p style="font-weight:100;">$message</p>
来自:
$name
电邮:
$email
$message
编辑:你的代码是这样的
if ($_POST['Submit']) {
if (empty($_POST['Phone'])) {
$content = "<html>
<head></head>
<body>
<div class='boldtext'>From:</div>
$name
<br/>
<div class='boldtext'>E-mail:</div>
$email
<br/><br/>
$message
<style>
.boldtext {
font-weight: bold;
}
</style>
</body>
</html>";
}
}
if($\u POST['Submit'])){
如果(空($_POST['Phone'])){
$content=”
发件人:
$name
电邮:
$email
$message
.黑体字{
字体大小:粗体;
}
";
}
}
你需要这样做
if ($_POST['Submit']) {
if (empty($_POST['Phone'])) {
$content = '<html>
<head></head>
<body>
<div style="font-weight:bold;">From:</div>
'.$name.'
<br/>
<div style="font-weight:bold;">E-mail:</div>
'.$email.'
<br/><br/>
<p style="font-weight:100;">'.$message.'</p>
</body>
</html>';
}
}
if($\u POST['Submit'])){
如果(空($_POST['Phone'])){
$content='1
发件人:
“.$name。”
电邮:
“.$email。”
”.$message
';
}
}
我找到了发送的电子邮件不是HTML格式的原因。它与HTML或CSS无关,错误在mail()中;函数:
参数$from干扰了$headers,使HTML格式无法工作
邮件($to、$subject、$message、$from、$headers)
邮件($to、$subject、$message、$headers)
现在一切正常,CSS结构取决于电子邮件客户端的兼容性。在这种情况下不需要内联样式。接收这些邮件提交的电子邮件服务提供商将是Outlook,而不是Gmail。所有内容都使用内联样式。此网站将把您的类转换为内联样式:这绝对不是我问题的答案。当你说“不使用html格式”时,你的意思是消息没有收到html标记吗?你能发布电子邮件客户端从php代码中收到的具体内容吗?当然,只是发布了。通过“不使用html格式”,我的意思是变量$content,本来就是这样,格式永远不会被读取。我想问题出在标题中,或者我没有正确声明电子邮件格式。应该是这样。谢谢,我会试试这个。我使用了样式标签,因为这个网站说Outlook接受它。我之前问了一个类似的问题,但没有解决,所以他们拒绝了建议我做一些类似于我问题中的代码的事情。按照我的建议尝试,这可能会对您有所帮助。:)我做了,它说:PHP语法检查:解析错误:语法错误,第14行代码中出现意外的“字体”(T_字符串)。是的,字面意思是:如果(空($\u POST['Phone']){$content=“发件人:$name
电子邮件:$email
$message”;}请查看答案,我已相应更改,这次只需复制粘贴,错误将不再存在。:)
if ($_POST['Submit']) {
if (empty($_POST['Phone'])) {
$content = '<html>
<head></head>
<body>
<div style="font-weight:bold;">From:</div>
'.$name.'
<br/>
<div style="font-weight:bold;">E-mail:</div>
'.$email.'
<br/><br/>
<p style="font-weight:100;">'.$message.'</p>
</body>
</html>';
}
}