Intereting Posts
Невозможно выполнить PHP-скрипт с помощью PHP exec Kohana 3.3 Модель не загружается на Linux, но будет работать в Windows Изменение объектов в returnCallback () PHPUnit Mocks wamp php CLI перестала работать Хорошие поисковые URL-адреса IMagicExtension: невозможно прочитать изображение из дескриптора файла API-интерфейс PayPal REST, возвращающий 500-серверную ошибку для маркера кредитной карты Как запомнить опубликованные поля в формах для выпадающих элементов? Уведомление PayPal IPN, получающее несколько уведомлений за один и тот же платеж PDO-> bindParam, PDO-> bindValue и PDO-> closeCursor PHP – найдите, существует ли какое-либо из ключевых слов в массиве в строке PHP с APC: Неустранимая ошибка: не удается переопределить класс Загрузите doc, pdf, xls и т. Д. Из приложения android на php-сервер Как выполнить математику в sql-запросе для вычисления процентной разницы? PHP-суммарный результат эха на лету (сложный)

Почему PHPmailer не отправляет вложение?

Я работал над созданием формы для загрузки файлов с помощью PHPmailer для отправки в виде вложений.

Наконец-то я получил его, чтобы отправить электронное письмо, но его не отправил вложение. Вот моя форма HTML:

<input type="file" class="fileupload" name="images[]" size="80" /> 

И вот мой код процессора php:

 <?php require("css/class.phpmailer.php"); //Variables Declaration $name = "the Submitter"; $email_subject = "Images Attachment"; $Email_msg ="A visitor submitted the following :\n"; $Email_to = "jonahkatz@yahoo.com"; // the one that recieves the email $email_from = "someone@someone.net"; $attachments = array(); // // //------Check TYPE------\\ uploadFile(); // //==============upload File Function============\\ // function uploadFile() { global $attachments; foreach($_FILES['images']['name'] as $key => $value) { // if(!empty($value)) { $filename = $value; //the Array will be used later to attach the files and then remove them from ser ver ! array_push($attachments, $filename); $dir = "uploads/$filename"; $success = copy($_FILES['images']['tmp_name'][$key], $dir); } // } $dir ="uploads/$filename"; if ($success) { echo " Files Uploaded Successfully<BR>"; SendIt(); // }else { exit("Sorry the server was unable to upload the files..."); } // } // //==== PHP Mailer With Attachment Func ====\\ // function SendIt() { // global $attachments,$name,$Email_to,$Email_msg,$email_subject,$email_from; // $mail = new PHPMailer(); $mail->IsQmail();// send via SMTP $mail->From = $email_from; $mail->FromName = $name; $mail->AddAddress($Email_to); $mail->AddReplyTo($email_from); $mail->WordWrap = 50;// set word wrap //now Attach all files submitted foreach($attachments as $key => $value) { //loop the Attachments to be added ... $mail->AddAttachment("uploads"."/".$value); } $mail->Body = $Email_msg."Name : ".$name"\n"; // $mail->IsHTML(false);// send as HTML $mail->Subject = $email_subject; if(!$mail->Send()) { echo "Message was not sent <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } // echo "Message has been sent"; // after mail is sent with attachments , delete the images on server ... foreach($attachments as $key => $value) {//remove the uploaded files .. unlink("uploads"."/".$value); } // } // ?> 

Ive проверено, и файл IS сохраняется в каталоге «uploads». Вот ошибки, которые я получаю:

 Files Uploaded Successfully Message was not sent Notice: Undefined property: phpmailer::$ErrorInfo in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 69 Mailer Error: 

Если кто-нибудь может обнаружить ошибки или внести какой-то вклад, как это было бы так полезно! Заранее спасибо!

Иона


Ive заменен

 foreach($attachments as $key => $value) { //loop the Attachments to be added ... $mail->AddAttachment("uploads"."/".$value); 

С

 foreach(array_keys($_FILES['files']['name']) as $key) { $source = $_FILES['files']['tmp_name'][$key]; // location of PHP's temporary file for this. $filename = $_FILES['files']['name'][$key]; // original filename from the client $mail->AddAttachment($source, $filename); } 

И вот теперь мои новые ошибки:

 Notice: Undefined index: files in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 58 Warning: array_keys() expects parameter 1 to be array, null given in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 58 Warning: Invalid argument supplied for foreach() in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 58 Strict Standards: Creating default object from empty value in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 68 Fatal error: Call to undefined method stdClass::IsHTML() in /usr/home/jak2234/public_html/new_form/phpmailerprocess.php on line 70 

Как я уже сказал в вашем другом вопросе, первое предупреждение связано с тем, что вы используете $filename в строке 10 вашего скрипта, не указав сначала значение для него:

 $dir ="uploads/$filename"; // $filename has NOT been defined at this point. 

Кроме того, для ваших приложений, почему бы просто не сделать:

 foreach(array_keys($_FILES['files']['name']) as $key) { $source = $_FILES['files']['tmp_name'][$key]; // location of PHP's temporary file for this. $filename = $_FILES['files']['name'][$key]; // original filename from the client $mail->AddAttachment($source, $filename); } 

Нет необходимости делать все копии файлов, создавать свои собственные пути и т. Д. Просто прикрепите временный файл PHP, созданный для вас, и назовите его любым исходным именем файла.

Ваш скрипт намного сложнее, чем нужно.