Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHPMailer中发送某些PDF时获取“已超过最大执行时间…”_Php_Phpmailer - Fatal编程技术网

在PHPMailer中发送某些PDF时获取“已超过最大执行时间…”

在PHPMailer中发送某些PDF时获取“已超过最大执行时间…”,php,phpmailer,Php,Phpmailer,我有一个表单可以上传一个PDF,并使用PHPMailer类通过电子邮件附件发送 我的表格要求上传标题和pdf: 若用户并没有填写我的字段,他将收到一条消息,说要填写所有字段,否则它将把我的文件上传到我的通讯文件夹 然后我使用sendEmail功能发送带有附件的电子邮件,但它不适用于大尺寸的PDF 我测试了259kb的宽度PDF,效果很好,但对于489kb的PDF,只有200kb不起作用,我总是会遇到相同的错误: class.smtp.php中超过了30秒的最大执行时间 我的PHP代码: if(i

我有一个表单可以上传一个PDF,并使用PHPMailer类通过电子邮件附件发送

我的表格要求上传标题和pdf:

若用户并没有填写我的字段,他将收到一条消息,说要填写所有字段,否则它将把我的文件上传到我的通讯文件夹

然后我使用sendEmail功能发送带有附件的电子邮件,但它不适用于大尺寸的PDF

我测试了259kb的宽度PDF,效果很好,但对于489kb的PDF,只有200kb不起作用,我总是会遇到相同的错误:

class.smtp.php中超过了30秒的最大执行时间

我的PHP代码:

if(isset($_POST['send_form']))
{

    $f['subject'] = $_POST['subject'];

    if(in_array('',$f) || empty($_FILES['img']['tmp_name']) )
    {
        echo '<span>Please Fill all fields!</span>';
    }
    else
    {

    if(!empty($_FILES['img']['tmp_name']))
    {
        $folder     = '../newsletter/'; 
        $year   = date('Y');
        $month  = date('m');

    if(!file_exists($folder.$year)){
        mkdir($folder.$year,0755);
    }

    if(!file_exists($folder.$year.'/'.$month)){
        mkdir($folder.$year.'/'.$month,0755);
    }

    $pdf= $_FILES['pdf'];
    $ext = substr($pdf['name'],-3); 
    $f['pdf'] = $f['subject'].".".$ext;
    $attachment = $folder.$year.'/'.$month.'/'.$f['pdf'];
    move_uploaded_file($pdf['tmp_name'], $folder.$year.'/'.$month.'/'.$f['pdf']);
   }
   }
}
我的功能发送电子邮件:


如果我将php.ini max_execution_time=30更改为max_execution_time=60,我不会收到错误,但不会收到任何电子邮件

PDF文件大吗?比图片还大?一个解决方案是简单地增加php.ini文件中的最大执行时间。我们说的是什么大小的PDF?即使您能够绕过php执行时间限制,在大多数服务上也可能达到电子邮件服务最大大小附件限制~15-20MB。在这种情况下考虑在发送之前压缩文件。谢谢你的答案Bonatoc和VLZVL。我认为问题其实在于pdf的大小,因为现在我尝试使用259kb的pdf,效果很好。但对于486kb的pdf,它不起作用。你知道我如何发送附件中至少2mb的pdf吗?这只是因为邮件->发送无法在最长执行时间内完成,因为文件大小,你要么需要更好的上传速度,要么需要增加最长执行时间。可能400Kb+pdf由于其他原因被卡住,例如,它被视为垃圾邮件。请尝试使用其他提供商的其他电子邮件地址。
sendMail($f['subject'],$msg,MAILUSER,'Name of sender','testEmail03@hotmail.com', 'emailReceptor03@hotmail.com');
function sendMail($subject,$message,$emissor,$emissorName,$receptor,$receptorName, $attachment, $reply = NULL, $replyName = NULL){

    require_once('mail/class.phpmailer.php'); 

    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->SMTPAuth = true; 
    $mail->IsHTML(true);
    $mail->SMTPSecure = "tls"; 
    $mail->Host = MAILHOST; 
    $mail->Port = MAILPORT; 
    $mail->Username = MAILUSER;
    $mail->Password = MAILPASS;    
    $mail->From = utf8_decode($emissor); 
    $mail->FromName = utf8_decode($emissorName); 
    $mail->Subject = utf8_decode($subject); 
    $mail->Body = utf8_decode($message);
    $mail->AddAddress(utf8_decode($receptor),utf8_decode($receptorName)); 
    $mail->AddAttachment($attachment);

    if($reply != NULL){
    $mail->AddReplyTo(utf8_decode($reply),utf8_decode($replyNome)); 
    }

    if($mail->Send()){
    return true;
    }
    else{
    return false;
    }
}