我目前正在尝试设计通过我自己制作的php联系人表单发送的传入电子邮件的样式。
只有一个小问题,当我在收件箱中收到电子邮件时,html显示为静态文本,而不是代码。
有谁能帮我吗?
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: info@epicconcepts.nl';
$to = 'info@epicconcepts.nl';
$subject = 'Contact formulier bericht';
$human = $_POST['human'];
$headers = "From: " . strip_tags($_POST['req-email']) . "'r'n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "'r'n";
$headers .= "CC: quincynorbert@live.nl'r'n";
$headers = 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$message = '<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body{background: #EDEBEA;}
#naam{background:#222222;border:4px solid #DDD;width:650px;}
#mail{background:#222222;border:4px solid #DDD;width:650px;}
#message{background:#222222;border:4px solid #DDD;width:650px;}
</style>
</head>
<body>
<div id="naam">'.$name.'</div>
<div id="mail">'.$email.'</div>
<div id="message">'.$message.'</div>
</body>
</html>';
if ($_POST['submit']) {
if ($name != '' && $email != '') {
if ($human == '4') {
if (mail ($to, $subject, $message, $from)) {
echo '<p class="correct-message">Your message has been sent!</p>';
} else {
echo '<p class="correct-message">Something went wrong, go back and try again!</p>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<p class="correct-message">You answered the anti-spam question incorrectly!</p>';
}
} else {
echo '<p class="correct-message">You need to fill in all required fields!</p>';
}
}
?>
感谢提前
您的邮件头包含在字符串$headers
中,但您没有将其传递给邮件函数,而是传递$from
,因此HTML和MIME邮件头永远不会发送,这就是为什么您会收到纯文本电子邮件:
if (mail ($to, $subject, $message, $from)) {
// ^ should be $headers
更改为:
if (mail ($to, $subject, $message, $headers)) {
此外,您的MIME标头会擦除当前的标头列表,因为您没有包含串联的.
字符,请更改为:
$headers .= 'MIME-Version: 1.0' . "'r'n";
// ^ don't forget this
最后,您应该避免在HTML电子邮件中使用<style>
CSS块,并不是所有的电子邮件客户端都会读取CSS块,有些客户端只会在直接在元素上与style=""
属性内联定义的情况下读取CSS。
编辑:要硬编码您的From标头,只需使用:
$headers = "From: info@mycompany.com'r'n";
请务必修复我上面指出的串联错误,否则您的From
标头将被覆盖而不会发送。