PHP mail()函数...发送空消息

时间:2014-06-25 14:18:37

标签: php html email attachment

我尝试从我的服务器向收件人发送电子邮件,没问题,电子邮件已发送。 我在这封电子邮件中有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);

2 个答案:

答案 0 :(得分:1)

如果我必须调试它,我会删除附加的PDF并检查它是否发送文本然后尝试将其添加回来。

此外,您可以尝试使用var_dump $ body和其他vars打印到您的屏幕并与我们分享,然后它会更容易发现问题。可能与您发送的内容不符,不符合电子邮件发送的格式。

答案 1 :(得分:0)

我非常确定当您在php中发送电子邮件时,必须将文本设置为内联。你也没有完成你的结束div(你有</div),这可能导致你无法看到文本,但它就在那里。

$message_html.= '<!DOCTYPE html><html><head><title>mytitle</title></head><body>';
$message_html.= '<div>my content!</div>'; // The unfinished div
$message_html.= '</body></html>';