2017-02-12 30 views
1

我正在嘗試設置處理多個文件附件的聯繫表單。我使用PHPMailer並從PHPMailer example構建了下面的腳本來附加多個文件。PHPMailer不附加大於100KB的文件 - PHP

下面的腳本很有效,直到附件超過100KB。如果文件大於100KB,則在附加時會跳過該文件。只有小於100KB的文件纔會被附加和發送。

我看過這個看起來很有前途的StackOverflow question,但是我的機器的php.ini文件中的值都設置爲32MB或更高。

我使用Mailgun作爲SMTP服務器,並且可以在日誌中看到超過100KB的附件根本沒有收到Mailgun,因此它必須與此腳本或我的PHP環境有關。

任何人都可以幫我解決這個問題嗎?

<?php 
require 'PHPMailer/PHPMailerAutoload.php'; 

$host = 'smtp.mailgun.org'; 
$username = '[email protected]'; 
$password = 'password'; 

$email_from = '[email protected]'; 
$email_to = '[email protected]'; 

$send = false; 

$subject = "Quote Request from Website"; 

$name = addslashes(strip_tags($_POST['name'])); 
$email = addslashes(strip_tags($_POST['email'])); 
$project_type = addslashes(strip_tags($_POST['project_type'])); 
$message = addslashes(strip_tags($_POST['message'])); 

$htmlmessage = <<<MESSAGE 
    <html> 
     <head> 
       <title>$subject</title> 
     </head> 

     <body> 
      <p><strong>Name:</strong> $name</p> 
      <p><strong>Email:</strong> $email</p> 
      <p><strong>Project Type:</strong> $project_type</p> 
      <p><strong>Message:</strong> $message</p> 
     </body> 
    </html> 
MESSAGE; 

$mail = new PHPMailer; 

$mail->isSMTP(); 
$mail->SMTPSecure = 'tls'; 
$mail->SMTPAuth = true; 
$mail->Username = $username; 
$mail->Password = $password; 
$mail->Host = $host; 
$mail->Port = 587; 

$mail->setFrom($email_from, $name); 
$mail->addAddress($email_to); 
$mail->addReplyTo($email, $name); 
// $mail->addCC('[email protected]'); 
// $mail->addBCC('[email protected]'); 

// Attach multiple files one by one 
$total = count($_FILES['attachments']['tmp_name']); 
echo $total; 
for ($ct = 0; $ct < $total; $ct++) 
{ 
    $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['attachments']['name'][$ct])); 
    $filename = $_FILES['attachments']['name'][$ct]; 
    if (move_uploaded_file($_FILES['attachments']['tmp_name'][$ct], $uploadfile)) { 
     echo $filename; 
     $mail->addAttachment($uploadfile, $filename); 
    } else { 
     $msg .= 'Failed to move file to ' . $uploadfile; 
     echo $msg; 
    } 

    // $name = $_FILES['attachments']['name'][$ct]; 
    // $path = $_FILES['attachments']['tmp_name'][$ct]; 
    // echo $name . ' - ' . $path . '<br>'; 
    // $mail->addAttachment($path, $name); 
} 

$mail->isHTML(true); 

$mail->Subject = $subject; 
$mail->Body = $htmlmessage; 
// $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 

形式:

<form action="contact/quote.php" method="post" id="quote-form" class="validate" role="form" enctype="multipart/form-data"> 

    <label>Name</label> 
    <input type="text" name="name" id="name" required> 

    <label>Email</label> 
    <input type="email" name="email" id="email" required> 

    <label>Project Type</label> 
    <select name="project_type" id="project_type" required> 
    <option value="" selected>Please Select</option> 
    <option value="option1">Option 1</option> 
    <option value="option2">Option 2</option> 
    </select> 

    <label>Upload Files</label> 
    <input multiple="multiple" type="file" name="attachments[]" value=""> 

    <label>Message</label> 
    <textarea name="message" id="message" rows="5" required></textarea> 

    <button type="submit" id="submit">Submit</button> 
</form> 

任何幫助,將不勝感激!

謝謝。

回答