@pillson

Проблема с phpmailer?

Добрый день. Проблема с отправкой файла из заявки на почту. Библиотека phpmailer. Вроде все сделал по мануалу но приходит письмо без файла. В чем может быть проблема?

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$path = $_SERVER['DOCUMENT_ROOT'].'/components/phpmailer/';

require $path.'Exception.php';
require $path.'PHPMailer.php';
require $path.'SMTP.php';

$errorContainer = array();

$arrayFields = array(
    'name' => $_POST['name'],
    'phone' => $_POST['phone'],
    'brand_watch' => $_POST['brand'],
);

// проверка всех полей на пустоту
foreach($arrayFields as $fieldName => $oneField){
    
    if($oneField == '' || !isset($oneField)){
        
        $errorContainer[$fieldName] = 'Поле обязательно для заполнения';
    }
}

// делаем ответ для клиента
if ( empty ( $errorContainer ) ) {

    $names = $_POST['name'];
    $form_phone = $_POST['phone'];
    $form_brand = $_POST['brand'];
    $form_model = $_POST['model'];
    $form_box = $_POST['box'];
    
        $mail = new PHPMailer;
        $mail->CharSet = 'UTF-8';
        $mail->setFrom('info@yandex.ru', 'example');     // от кого
        $mail->addReplyTo('info@yandex.ru', 'example');  // обратный адрес
        $mail->addAddress('ev@yandex.ru');
        $mail->Subject = 'Заявка';  
        $mail->Body = "Заявка";
        
        //Attach multiple files one by one
        for ( $ct = 0; $ct < count ( $_FILES['file']['tmp_name'] ); $ct++ ) {
            
            $uploadfile = tempnam ( sys_get_temp_dir(), sha1 ( $_FILES['file']['name'][$ct] ) );
            
            $filename = $_FILES['file']['name'][$ct];
            
            if ( move_uploaded_file ( $_FILES['file']['tmp_name'][$ct], $uploadfile ) ) {
                
                $mail->addAttachment( $uploadfile, $filename );
                
            }
            
        }
        
            // Отправляем
            if ( $mail->send() ) {
                
                 echo json_encode(array('result' => 'success'));
                 
            }

} else {

    // если есть ошибки
    echo json_encode(array('result' => 'error', 'text_error' => $errorContainer));
    
}
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
if ( move_uploaded_file ( $_FILES['file']['tmp_name'][$ct], $uploadfile ) ) {
                $mail->addAttachment( $uploadfile, $filename );  //почему бы не проверить на is_file()?
            }//где елс? Зачем вообще этот код с проверкой если вы ничего с ним не делаете?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы