Существует ли максимально разумный размер файла для присоединения к письму MIME с PHP? - PullRequest
2 голосов
/ 26 октября 2010

Я запускаю PHP на IIS6.У меня есть PHP, который успешно отправляет изображение размером 1 КБ в виде вложения в электронное письмо.Однако, когда я пытаюсь прикрепить PDF-файл размером 500 КБ (изменив Content-Type), он зависает, и через несколько минут я получаю сообщение «Процесс FastCGI превысил установленное время ожидания запроса» (Ошибка номер 258 (0x80070102)).Любые мысли о том, почему это так долго, чтобы прикрепить PDF?Решение не в том, чтобы увеличить лимит тайм-аута, у меня не может быть пользователей, сидящих там более 3 минут, пока файл отправляется.

Я включил мой код ниже:

    $headers   = "From: ".$from."\r\n";
    $headers .= "Reply-To: ".$from."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
    $headers .="This is a multipart message in MIME format. \r\n\r\n";

    $headers .= "--".$uid."\r\n\r\n";
    $headers .= "Content-Type: text/plain; charset-iso-8859-1\r\n";
    $headers .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
    $headers .= $text . "\r\n\r\n";

    $headers .= "--".$uid."\r\n\r\n";
    $headers .= "Content-Type: text/html; charset-iso-8859-1\r\n";
    $headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $headers .= $html  . "\r\n\r\n";

    $headers .= "--".$uid."\r\n\r\n";
    $headers .= "Content-Type: image/png; name=\"".$filename."\"\r\n";
    $headers .= "Content-Transfer-Encoding: base64\r\n";
    $headers .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $attachment = chunk_split(base64_encode(file_get_contents($path.$filename))); 
    $headers .= $attachment . "\r\n\r\n";

    $headers .= "--".$uid."\r\n\r\n";

    //send the email 
    $mail_sent = @mail( $to, $subject, $text, $headers );

Заранее спасибо за любой совет.

1 Ответ

2 голосов
/ 16 марта 2011

Поместите вложение в параметр сообщения функции mail () вместо параметра дополнительных заголовков.

Сегодня я столкнулся с той же проблемой и обнаружил, что не могу отправить большие файлы как часть параметра headers в функции mail ().

, например

$headers   = "From: ".$from."\r\n";
$headers .= "Reply-To: ".$from."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
$body .="This is a multipart message in MIME format. \r\n\r\n";

$body .= "--".$uid."\r\n\r\n";
$body .= "Content-Type: text/plain; charset-iso-8859-1\r\n";
$body .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$body .= $text . "\r\n\r\n";

$body .= "--".$uid."\r\n\r\n";
$body .= "Content-Type: text/html; charset-iso-8859-1\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $html  . "\r\n\r\n";

$body .= "--".$uid."\r\n\r\n";
$body .= "Content-Type: image/png; name=\"".$filename."\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$attachment = chunk_split(base64_encode(file_get_contents($path.$filename))); 
$body .= $attachment . "\r\n\r\n";

$body .= "--".$uid."\r\n\r\n";

//send the email 
$mail_sent = @mail( $to, $subject, $body, $headers );
...