php邮件附件不适用于某些客户端

php邮件附件不适用于某些客户端,php,email,attachment,Php,Email,Attachment,我有一个网络表单,允许我们的代理上传pdf附件,然后通过电子邮件发送给我们的客户。我在一个网站上找到的用于生成电子邮件的代码,直到最近它似乎还工作得很好。似乎只有一些,例如gmail邮件客户端,附件被打印到邮件正文中,而不是被解释为附件。它适用于几乎所有我们尝试过的客户,但只有少数例外。如果能找到解决办法,我将不胜感激,因为我对此不太了解 if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"

我有一个网络表单,允许我们的代理上传pdf附件,然后通过电子邮件发送给我们的客户。我在一个网站上找到的用于生成电子邮件的代码,直到最近它似乎还工作得很好。似乎只有一些,例如gmail邮件客户端,附件被打印到邮件正文中,而不是被解释为附件。它适用于几乎所有我们尝试过的客户,但只有少数例外。如果能找到解决办法,我将不胜感激,因为我对此不太了解

if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
return;
}
if ($_FILES["file"]["type"] != "application/pdf")
{
echo "<center>Attachment has to be valid .pdf<br><a href='../index.php'>Tillbaka</a></center>";
return; 
}
$file = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
/*
striped out some parts about how the body is constructed
note that there are no comment fields here in the real version of this sourcecode.
*/  

$msg = "msg here.." //i striped this part out as there's nothing odd about how the body is constructed its plain text

$random_hash = md5(date('r', time())); 

ob_start();
?> 
--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" 

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<?php echo $msg;?>

--PHP-alt-<?php echo $random_hash; ?>-- 

--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: application/pdf; name="<?php echo $_FILES["file"]["name"];?>"
Content-Transfer-Encoding: base64
Content-Disposition: attachment

<?php echo $file;?>

--PHP-mixed-<?php echo $random_hash; ?>-- 
    <?php    
$message = ob_get_clean();     
//I removed some info about recievers, reply-to, from etc..
mail($hidden_variable, "hidden subject", $message, "From:Hidden Name <no-reply@hidden.com>\r\nReply-To: no-reply@hidden.com\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""))    

你无法解释客户如何阅读电子邮件。有些人太聪明了,他们会尝试将附件包含在身体中,例如,通常会包含图像。你对此无能为力。一种解决方案是将PDF存储在服务器上,并通过电子邮件发送一个链接以供下载。

您无法确定客户端如何读取电子邮件。有些人太聪明了,他们会尝试将附件包含在身体中,例如,通常会包含图像。你对此无能为力。一种解决方案是将PDF存储在服务器上,并通过电子邮件发送一个链接供下载。

嗨,是的,我开始明白了。然而,问题是,一切都是通过我们的内部网运行的。Web应用程序仅供我们的支持人员对我们的客户使用,我们不能托管pdf供下载,我们也不应该这样做,因为我们只是监工和客户之间的中间人。但是,如果我现在打开我的邮件客户端,向gmail发送一封带有pdf附件的电子邮件,效果会很好。因此,我的电子邮件的构造方式一定有问题,内容标题中的某些内容,等等,一些邮件客户不喜欢。你可以做的一件事是比较两封电子邮件中的标题。嗨,是的,我开始明白了。然而,问题是,一切都是通过我们的内部网运行的。Web应用程序仅供我们的支持人员对我们的客户使用,我们不能托管pdf供下载,我们也不应该这样做,因为我们只是监工和客户之间的中间人。但是,如果我现在打开我的邮件客户端,向gmail发送一封带有pdf附件的电子邮件,效果会很好。因此,我的电子邮件结构、内容标题等方面肯定有问题,一些邮件客户端不喜欢。你可以做的一件事是比较两封电子邮件中的标题。