Всем привет.
Ситуация: использую mail() php для отправки с сайта писем с прикрепляемыми файлами (jpg, png и т.д.). На почту приходит письмо со всеми заголовками и содержанием - здесь все нормально, а прикрепляемый файл вместо прикрепленного файла выводится как абракадабра. Уже все перепробовал - ничего не помогает. Код привожу, может, я уже каких-то очевидных вещей не замечаю. Данные на сервер передаются через связку jQuery + ajax - здесь тоже все работает, затык где-то в заголовках:
...
$type = $_POST[ 'selectTypeCalc' ];
$size1 = $_POST[ 'inputSize1Calc' ];
$size2 = $_POST[ 'inputSize2Calc' ];
$name = $_POST[ 'inputNameCalc' ];
$tel = $_POST[ 'inputTelCalc' ];
$email = $_POST[ 'inputEmailCalc' ];
$message= $_POST[ 'inputMessageCalc' ];
$path = '/home/site/site.ru/docs/upload/tmp/';
$to = 'info@site.ru';
$from_mail = 'info@site.ru';
$subject = "=?UTF-8?B?".base64_encode( "Запрос на онлайн-расчет стоимости кухни" )."?=";
$boundary = md5( uniqid( time() ) );
$message_body = '
<h4>Запрос на онлайн-расчет стоимости кухни со следующими данными:</h4>
<table cellspacing="0" style="width: 300px; height: 200px;">
<tr>
<th>Имя:</th><td>'.$name.'</td>
</tr>
<tr>
<th>Тел:</th><td>'.$tel.'</td>
</tr>
<tr style="background-color: #e0e0e0;">
<th>Email:</th><td>'.$email.'</td>
</tr>
<tr>
<th>Описание проекта:</th><td>'.$message.'</td>
</tr>
<tr>
<th>Тип кухни:</th><td>'.$type.'</td>
</tr>
<tr>
<th>Длина стороны А, см:</th><td>'.$size1.'</td>
</tr>
<tr>
<th>Длина стороны B, см:</th><td>'.$size2.'</td>
</tr>
</table>';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8" . "\r\n";
$headers .= "From: КОМПАНИЯ МЕБЕЛЬГУД <" . $from_mail . ">" . "\r\n";
$headers .= "Content-Transfer-Encoding: base64" . "\r\n" . "\r\n";
$message = chunk_split( base64_encode( $message_body ) );
if( !empty( $_FILES[ 'inputFileCalc' ][ 'tmp_name' ] ) )
{
$filetype = $_FILES[ 'inputFileCalc' ][ 'type' ];
$filename = $_FILES[ 'inputFileCalc' ][ 'name' ];
if( move_uploaded_file( $_FILES[ 'inputFileCalc' ][ 'tmp_name' ], $path.$filename ) )
{
$file = $path.$filename;
$handle = fopen( $file, "r" );
if( !$handle ) { $status = 'err'; }
$content = fread( $handle, filesize( $file ) );
fclose( $handle );
$message .= "--" . $boundary . "--";
$message .= "Content-Type: application/octet-stream; name='" . $filename . "'\r\n";
$message .= "Content-Disposition: attachment; filename='" . $filename . "'\r\n";
$message .= "\r\n";
$message .= chunk_split( base64_encode( $content ) );
$message .= "--" . $boundary . "--";
}else{ die; }
}
mail( $to, $subject, $message, $headers );
...
Спасибо!