当我尝试通过php发送邮件时,GMail
不接受我的html
:
简单示例:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body style="padding:0px; margin:0PX;" bgcolor="#dfdfdf">
<table width="100%" align="center" border="0" cellpadding="0" cellspacing="0" bgcolor="" style="table-layout:fixed; margin:0 auto;">
<tr>
<td width="640" align="center" valign="top">
Screenshot: <img src="data:image/jpeg;base64,someimginfo" />
</td>
</tr>
</table>
</body>
</html>
GMail输出:
Gmail会修改我的文字,例如<html>
- &gt; "<html>"
我使用的标题:MIME-Version: 1.0
&amp; Content-type: text/html; charset=UTF-8
我做错了什么?
编辑 PHP
代码:
<?php
$recipient = "xxxxxx@gmail.com";
$image = $_POST["image"];
$contact = $_POST["contact"];
$token = $_POST["token"];
if($token != "***"){
exit('{"success":false, "error":"Invalid Token"}');
}
$from = (filter_var($contact, FILTER_VALIDATE_EMAIL)) ? $contact : 'no- reply@example.com';
$header = 'From: webmaster@example.com' . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$txt = '
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body style="padding:0px; margin:0PX;" bgcolor="#dfdfdf">
<table width="100%" align="center" border="0" cellpadding="0" cellspacing="0" bgcolor="" style="table-layout:fixed; margin:0 auto;">
<tr>
<td width="640" align="center" valign="top">
Screenshot: <img src="data:image/jpeg;base64,' . $image . '" />
</td>
</tr>
</table>
</body>
</html>
';
if(mail($recipient, "APP Support request", $txt, $header)){
exit('{"success":true}');
}
exit('{"success":false, "image":"' . $image . '"}');
?>
答案 0 :(得分:1)
PHPmailer是这份工作的最佳班级! https://github.com/PHPMailer/PHPMailer
编辑:用github地址替换http://phpmailer.worxware.com/。
答案 1 :(得分:1)
看起来问题出在以下几行:
$header = 'From: webmaster@example.com' . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
// …
if(mail($recipient, "APP Support request", $txt, $header)){
您可以在名称$header
和$headers
之间切换。因此,当您将text/html
内容类型添加到变量$headers
时,这不会影响用于实际发送电子邮件的$header
变量。
您应该将所有这些变量切换为相同的名称$headers
。