2014-10-08 3 views
0

Я никогда не касался PHP, но был поставлен задачей фиксации коды стажера .. ВОтправка вложений (ы) в электронной почте

Я пытаюсь прикрепить файл загружается на электронную почту, я представляемая. Электронная почта отправляется, но без файла. Я использую PHPMailerAutoUpload.php (находится в GitHub).

Вот код, который я использую.

Приставка сохраняются через move_uploaded_file

move_uploaded_file($resume['tmp_name'] , $up_dir .basename($random_var . '_wse_' . $resume['name'])) 

Примечание: Я закомментировал функцию move_uploaded_file, чтобы убедиться, что я не избавившись от привязанности.

 require_once('phpmailer/PHPMailerAutoload.php'); 
     $mail = new PHPMailer(true); 
     $mail->IsSMTP(); 
     $mail->SMTPDebug = 2; 
     $mail->SMTPAuth = false; 
     $mail->Host = 'oursmtp'; 
     $mail->Port = 25; 

     $mail->setFrom($_POST['E-mail'] , $_POST['first_name'] . " " . $_POST['last_name']); 
     $mail->addAddress('[email protected]'); 
     $mail->Subject = "Test" . @date('M/D/Y'); 
     $mail->msgHTML($msgDoc); 

     if (isset($_FILES['uploaded_file']) && 
     $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) { 
     $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'], 
          $_FILES['uploaded_file']['name']); 
     } 


     if (!$mail->send()) { 
      $mailError = $mail->ErrorInfo; 
      $outcomeArr = array(
           'outcome'=>'failure', 
           'message'=>'Error' . $mailError 
          );    
      echo json_encode($outcomeArr); 
      exit();    
     } else { 
      // success 
      $outcomeArr = array(
           'outcome'=>'success', 
           'message'=>'Thank you' 
          );  
      echo json_encode($outcomeArr); 
     } 

Из того, что я прочитал, $_FILES это временное хранилище для загрузки файлов в PHP. С помощью этого кода отправляется электронное письмо, но без вложения (только ссылка на местоположение загруженного файла).

Я пробовал следовать this, но он не работает для меня.

ответ

1

Ваш стаж был, по-видимому, рок-звездой, которой не нужно было проверять или указывать условия ошибки, а затем отправлять почту, даже если нет вложения или если во время загрузки была ошибка. Измените эти биты на код, чтобы рассказать вам, почему файл не был присоединен:

if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) { 
    if(! $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'], $_FILES['uploaded_file']['name'])) { 
     echo 'Error adding attachment: ' . $mail->ErrorInfo; 
    } 
} else if(!isset($_FILES['uploaded_file'])) { 
    echo 'No uploaded file found'; 
} else { 
    echo 'Uploaded file error: ' . $_FILES['uploaded_file']['error']; 
} 
+0

Хорошо. Теперь я вижу, что это говорит «Нет загруженного файла» .. Хм. Это странно. Когда я использовал метод move_uploaded_file() ', он работает, поэтому там должен быть * файл. –

+1

Следует отметить, что бит 'uploaded_file' в' $ _FILES ['uploaded_file'] 'не является статическим значением, это имя поля ввода файла в форме загрузки. В исходном, неизмененном сценарии, как определяется '$ resume'? Это должно иметь правильное имя поля/индекс массива. – Sammitch

+0

Определяется как 'Foreach ($ _ FILES as $ resume):' –

Смежные вопросы