2013-04-21 5 views
0

Я пытаюсь создать отправку почты с файлом вложения через PHP, но есть ошибка, когда почта отправляется в почтовый ящик, сообщение появляется без каких-либо вложений здесь, снимок экрана из почтового ящикафункция отправить электронную почту с приложением ошибка

enter image description here

<?php 
function mail_file($to, $from, $subject, $body, $file){ 

    $boundary = md5(rand()); 

    $headers = array(
     'MIME-Version: 1.0', 
     "From: {$from}", 
     "Content Type : multipart/mixed; boundary=\"{$boundary}\"" 

        ); 

$message = array(
"--{$boundary}", 
'Content-Type: text/html; charset="utf-8"', 
'Content-transfer-Encoding: 7-bit', 
'', 
chunk_split($body), 
"--{$boundary}", 
"Content-Type: {file['type']}; name=\"{$file['name']}\"", 
"Content-Disposition: attachment; filename=\"{$file['name']}\"", 
"Content-Transfer-Encoding: base64", 
'', 
@chunk_split(base64_encode(file_get_contents($file['path']))), 
"--{$boundary}--" 
); 

@mail($to, $subject, implode("\r\n", $message), implode("\r\n", $headers));  

     } 

     if($_SERVER['REQUEST_METHOD'] =='POST'){ 
    $file = array (

    'name' => $_FILES['file']['name'], 
    'size' => $_FILES['file']['size'], 
    'type' => $_FILES['file']['type'], 
    'path' => $_FILES['file']['tmp_name'] 
    ); 



    mail_file('[email protected]', 'File from <[email protected]>', 'a file up', $body, $file); 
    } 

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>send mail</title> 
</head> 

<body> 


<form action="" method="post" enctype="multipart/form-data"> 
<label>Name</label><br /> 

<input type="text" name="name" id="name" /> 
<br /><br /> 


<input type="file" name="file" id="file"/> 
<br /> 

<input type="submit" value="email file" /> 

</form> 
</body> 
</html> 
+0

Я не уверен, что может быть проблемой, но почему бы вам не использовать почтовую библиотеку для отправки электронной почты с вложениями? Это потребует меньше кода и обеспечивает возможность прикреплять файлы, и вы не столкнетесь с такими проблемами. Один популярный lib - Swift http://swiftmailer.org/ –

+0

Ну, вы говорите «есть ошибка» ... что такое ошибка? Что говорят лог-файлы? – arkascha

+0

Также в таких случаях вы всегда должны сначала сбрасывать конечные компоненты полезной нагрузки в файл и проверять, действительно ли они содержат то, что вы ожидаете. Добавьте эту информацию к вопросу выше. – arkascha

ответ

2

заголовок почты следует читать Content-Type, не Content Type.

+0

теперь он работает, но файл с размером в почтовом ящике –

+0

Означает ли это, что вы не можете видеть размер файла только в почтовом клиенте? Или что вы даже не можете сохранить файл из письма? –

+0

файл прибывает на почту с размером 0k –

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