Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ошибка при отправке файла функцией mail


Автор: lasalexx 26.6.2008, 16:17
Есть у меня функция которая отправляет письмо вместе с файлом:

Код

function send_mail($to, $msg, $subject, $fromaddress, $fromname)
{

// -=-=-=- MIME BOUNDARY

$mime_boundary = "----Sandro----".md5(time());

// -=-=-=- MAIL HEADERS

$headers = "From: ".$fromname." <".$fromaddress.">\n";
$headers .= "Reply-To: ".$fromname." <".$fromaddress.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$mime_boundary\"\n";

// -=-=-=- HTML EMAIL PART
$message = "--$mime_boundary\n";
    
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

$message .= $msg."\n\n";

if (is_uploaded_file($_FILES['attachment']['tmp_name'])){
    $file=&$_FILES['attachment'];
        $f = fopen($file['tmp_name'],'rb');
        $data = fread($f,filesize($file['tmp_name']));
        fclose($f);
    $message .= "--$mime_boundary\n";
    $message .= 'Content-Type: '.$file['type'].';\n';
    $message .= ' name="'.basename($file['name']).'"\n';
    $message .= 'Content-Disposition: attachment;\n';
    $message .= ' filename="'.basename($file['name']).'"\n';
    $message .= 'Content-Transfer-Encoding: base64\n\n';
    $message .= chunk_split(base64_encode($data)).'\n\n';
    }

// -=-=-=- FINAL BOUNDARY

$message .= "--$mime_boundary--\n\n";

// -=-=-=- SEND MAIL

$mail_sent = @mail( $to, $subject, $message, $headers );
}

Но файл доходит некоректно. То есть например картинка приходящая на электроную почту не отображается. Может кто знает в чём я ошибся?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)