我尝试从我的服务器向收件人发送电子邮件,没问题,电子邮件已发送。 我在这封电子邮件中有 TEXT HTML,还有一个 PDF 附件...
问题是:我收到了邮件,我收到了 PDF,但是没有文本!
如果你能帮忙的话,这是我的代码:)
$filepath = '../../path/file.pdf';
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email))
{
$br = "\r\n";
}
else
{
$br = "\n";
}
$message_html= "Content-Type: text/html; charset=\"ISO-8859-1\"".$br;
$message_html.= "Content-Transfer-Encoding: 8bit".$br;
$message_html.= '<!DOCTYPE html><html><head>
<title>mytitle</title>
</head>
<body>
<div>
my content!
</div
</body>
</html>';
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
$subject = "mysubject";
$attached_file = file_get_contents($filepath);
$attached_file = chunk_split(base64_encode($attached_file));
$pos=strrpos($filepath,"/");
if($pos!==false)$file_name=substr($filepath,$pos+1);
else $file_name=$filepath;
$pos=strrpos($filepath,".");
if($pos!==false)$file_type="/".substr($filepath,$pos+1);
else $file_type="";
$attached = "\n\n". "--" .$boundary . "\nContent-Type: application".$file_type."; name=\"$file_name\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"tickets.pdf\"\r\n\n".$attached_file . "--" . $boundary . "--";
//=====HEADER
$header = "To: ".$email." ".$br;
$header.= "From: frrrrrom".$br;
$header.= "Cc: cccccccc".$br;
$header.= "Reply-to: qdfqsf".$br;
$header.= "MIME-Version: 1.0".$br;
$header.= "Content-Type: multipart/mixed;".$br." boundary=\"$boundary\"".$br;
//==========
$body = $message_html.$attached;
mail($email,$subject,$body,$header);
最佳答案
如果必须调试它,我会做的是删除附加的 PDF 并检查它是否发送了文本,然后尝试将其添加回去。
您也可以尝试使用 var_dump 将 $body 和其他变量打印到屏幕上并与我们分享,这样就可以更容易地发现问题。可能是因为您发送的内容与电子邮件发送的格式不匹配。
关于PHP mail() 函数 ... 已发送空邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411174/