Отправка вложений в электронное письмо

Я никогда не касался 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( 'test@test.com' );
$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. С этим кодом электронное письмо отправляется, но без вложения (только ссылка на местоположение загруженного файла).

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

0

Решение

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

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'];
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector