使用PHP附加到MIME电子邮件的文件大小是否有一个合理的最大值?

使用PHP附加到MIME电子邮件的文件大小是否有一个合理的最大值?,php,email,iis-6,mime,attachment,Php,Email,Iis 6,Mime,Attachment,我在IIS6上运行PHP。我有一些PHP,它成功地将1KB的图像作为附件发送到电子邮件中。然而,当我尝试附加一个500KB的PDF时(更改了内容类型),它会挂起,几分钟后,我得到“FastCGI进程超出了配置的请求超时”(错误号258(0x80070102)) 有没有想过为什么要花这么长时间才能附上PDF?解决方案是不增加超时限制,我不能让用户在文件发送时坐在那里3分钟以上 我已将我的代码包括在下面: $headers = "From: ".$from."\r\n"; $he

我在IIS6上运行PHP。我有一些PHP,它成功地将1KB的图像作为附件发送到电子邮件中。然而,当我尝试附加一个500KB的PDF时(更改了内容类型),它会挂起,几分钟后,我得到“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 );

提前感谢您的建议。

将附件放在mail()函数的message参数中,而不是附加的headers参数中

今天我遇到了同样的问题,发现我无法将大文件作为mail()函数中headers参数的一部分提交

e、 g


您确定不是PDF的实际生成导致脚本超时?这听起来与附件文件大小无关。附件大小取决于邮件服务器设置,通常至少为2mbHi,我不是生成PDF,我是从文件系统附加PDF。我试着附加一个60KB的PDF和1KB的PNG,花了24秒。如果我添加570KB的PDF文件,它会超时。这是需要花费时间的编码-如果我删除base64_编码的调用,电子邮件会立即发送,但附件当然会损坏。
$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 );