2017-02-12 2 views
1

Ich versuche ein Kontaktformular einzurichten, das mehrere Dateianhänge bearbeitet. Ich verwende PHPMailer und baute das folgende Skript aus dem PHPMailer example zum Anhängen mehrerer Dateien.PHPMailer verbindet keine Dateien größer als 100KB - PHP

Das folgende Skript funktioniert gut, bis Anhänge 100 KB überschreiten. Wenn eine Datei größer als 100 KB ist, wird sie beim Anhängen übersprungen. Nur Dateien, die kleiner als 100 KB sind, werden angehängt und gesendet.

Ich habe diese StackOverflow question gesehen, die vielversprechend aussah, aber die Werte in meiner Maschine php.ini Datei wurden alle auf 32 MB oder höher eingestellt.

Ich benutze Mailgun als SMTP-Server und kann in den Protokollen sehen, dass die Anhänge, die 100KB überschreiten, überhaupt nicht zu Mailgun gelangen, also muss es etwas mit diesem Skript oder meiner PHP-Umgebung zu tun haben.

Kann mir jemand helfen, dies zu lösen?

<?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'; 
} 

Die Form:

<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> 

Jede Hilfe wäre sehr geschätzt!

Danke.

Antwort

Verwandte Themen