使用PHP发送电子邮件,Gmail无法正常运行

时间:2016-06-20 18:37:20

标签: php html email gmail

当我尝试通过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输出:

enter image description here

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 . '"}');
?>

2 个答案:

答案 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