У меня есть веб-форма, которая позволяет нашим агентам загружать вложение в формате 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 <[email protected]>\r\nReply-To: [email protected]\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""))