iPhone上的PHP电子邮件显示不正确
我有一个表格,发送电子邮件给网站所有者和表格提交者。它在任何地方看起来都很棒,但在iPhone上它包含了所有html代码 以下是我处理表单的代码:iPhone上的PHP电子邮件显示不正确,php,iphone,email,Php,Iphone,Email,我有一个表格,发送电子邮件给网站所有者和表格提交者。它在任何地方看起来都很棒,但在iPhone上它包含了所有html代码 以下是我处理表单的代码: <?php $name_field = $_POST['name']; $email_field = $_POST['email']; $phone = $_POST['phone']; $message = $_POST['message']; $link = $_POST['link']; $to = 'me@me.com'
<?php
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$link = $_POST['link'];
$to = 'me@me.com';
$toCust = $email_field;
$subject = 'Lead From Website';
$random_hash = md5(date('r', time()));
$headers = "From: me@me.com\r\nReply-To: $email; ";
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"";
ob_start();
?>
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 7bit
<h3>Contact Form Submission From Website</h3>
<table width="39%" cellpadding="10" border="0">
<tr>
<td width="47%"><strong>Name:</strong></td>
<td width="53%" style='color:#990000'><?php echo $name_field; ?></td>
</tr>
<tr>
<td><strong>Email:</strong></td>
<td style='color:#990000'><?php echo $email_field; ?></td>
</tr>
<tr>
<td><strong>Phone Number:</strong></td>
<td style='color:#990000'><?php echo $phone; ?></td>
</tr>
<tr>
<td><strong>Message:</strong></td>
<td style='color:#990000'><?php echo $message; ?></td>
</tr>
</table>
--PHP-alt-<?php echo $random_hash; ?>--
<?
$message = ob_get_clean();
if(isset($_POST['link']) && $_POST['link'] == ''){
$mail_sent = @mail( $to, $subject, $message, $headers );
$mail_sent = @mail( $toCust, $subject, $message, $headers );
header('Location: thankyou.html');
}
echo $mail_sent ? "Your email has been sent." : "The message failed to send. Our form thinks you're spam. If you're not, please give us a call";
?>
--PHP alt-
内容类型:text/html;charset=“UTF-8”
内容传输编码:7bit
从网站提交联系表格
名称:
电子邮件:
电话号码:
消息:
--PHP alt---
您可能会遇到以下问题:
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 7bit
UTF-8和7bit编码几乎是互斥的,因为UTF-8是一种多字节编码。您可能应该切换到引用的可打印和使用。如果您使用的是PHP<5.3,则注释中会有替换项
编辑
$part_header=Hi Sammitch,我查看了引用的_printable_encode()的文档,它略高于我的级别。看起来我只是把整件事包装在一个函数中。这也适用于我的代码吗?谢谢Dave@FTSoR它应该只应用于MIME部分的主体,而不是头。我已经用一些代码更新了我的答案,这些代码将输出缓冲替换为,并将标题和正文部分拆分为各自的部分。然而,在我写作的过程中,我注意到你还忽略了
和
标记,这也可能是iPhone邮件客户端无法正确呈现邮件的原因。你这么说很有趣。添加这些标签是我第一次尝试,但没有成功。谢谢你的更新。我要试一试。
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 7bit
$part_header = <<<_EOI_
--PHP-alt-$random_hash
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
_EOI_;
$part_body = <<<_EOI_
<html>
<body>
<h3>Contact Form Submission From Website</h3>
<table width="39%" cellpadding="10" border="0">
<tr>
<td width="47%"><strong>Name:</strong></td>
<td width="53%" style='color:#990000'>$name_field</td>
</tr>
<tr>
<td><strong>Email:</strong></td>
<td style='color:#990000'>$email_field</td>
</tr>
<tr>
<td><strong>Phone Number:</strong></td>
<td style='color:#990000'>$phone</td>
</tr>
<tr>
<td><strong>Message:</strong></td>
<td style='color:#990000'>$message</td>
</tr>
</table>
</body>
</html>
--PHP-alt-$random_hash--
_EOI_;
$message = $part_header . quoted_printable_encode($part_body);