2016-06-20 2 views
1

Когда я пытаюсь отправить почту с помощью PHP, GMail не принимает мои html:Отправка электронной почты с PHP, Gmail не работает

Простой пример:

<!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> ->"<html>"

Заголовки, которые я использую: MIME-Version: 1.0 & Content-type: text/html; charset=UTF-8

Что я делаю неправильно?

EDITPHP Код:

<?php 
$recipient = "[email protected]"; 

$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- [email protected]'; 
$header = 'From: [email protected]' . "\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

Можете ли вы опубликовать код PHP, который вы используете для установки этих заголовков и отправки электронной почты? –

+0

@ RoryO'Kane сделано –

ответ

1

Похоже, проблема заключается в этих строках:

$header = 'From: [email protected]' . "\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.

Смежные вопросы