Как отправлять вложения по почте на PHP?

Здравствуйте, суть вопроса такова:
Есть форма, в которую пользователь вводит данные, а за одно и прикрепляет файл. Введенные данные вместе с файлом нужно отправить по почте. Я сделал так, что бы после заполнения формы файл загружался на сервер и там хранился, но вот как его отправить вложением по почте я не понимаю.
  • Вопрос задан
  • 2353 просмотра
Решения вопроса 2
65536
@65536
используйте phpmailer. там есть метод addattachment
Ответ написан
Комментировать
@WebEditor
$file = fopen($filename, "rb");
$data = fread($file,  filesize( $filename ) );
fclose($file);

$NameFile = $NameFile; // в этой переменной надо сформировать имя файла (без всякого пути)
$File = $data;
$to = $Email;
$From = "info@test.ru"; //От кого

$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных. 
$message = "
<p>Любой текст если нужно</p>
";
$subject= '=?utf-8?B?' . base64_encode('Пример') . '?=';

$headers    = "MIME-Version: 1.0;$EOL";   
$headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
$headers   .= "From: $From\nReply-To: $From\n";  
  
$multipart  = "--$boundary$EOL";   
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";   
$multipart .= "Content-Transfer-Encoding: base64$EOL";   
$multipart .= $EOL; // раздел между заголовками и телом html-части 
$multipart .= chunk_split(base64_encode($message));   

$multipart .=  "$EOL--$boundary$EOL";   
$multipart .= "Content-Type: application/octet-stream; name=\"$NameFile\"$EOL";   
$multipart .= "Content-Transfer-Encoding: base64$EOL";   
$multipart .= "Content-Disposition: attachment; filename=\"$NameFile\"$EOL";   
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 
$multipart .= chunk_split(base64_encode($File));   

$multipart .= "$EOL--$boundary--$EOL";   

if(!mail($to, $subject, $multipart, $headers)){
    echo 'Письмо не отправлено';
} //Отправляем письмо
else{
    echo 'Письмо отправлено';
}


Enjoy! =)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы