Вложение файла не присоединяет phpMailer

Это моя первая попытка использовать phpMailer, и я не получаю никаких вложений с ним. Все остальное отправляется кроме вложения.
uploads Каталог находится сразу после корня, где должен быть прикрепленный файл. Что-то не так с моей формой php.

<?php

require('class.phpmailer.php');

//var_dump($_POST);

//die;

$subject = "Consignment Form";

$name = $_POST['name'];

$email_address = $_POST['email'];

$message = $_POST['message'];

$phone = $_POST['phone'];$target_dir = "/uploads/";
$target_file = $target_dir . basename($_FILES["file_upload"]["name"]);

// put your email

$to = 'gslonina7@gmail.com';$email_subject = "Consignment form submitted by:  $name";

// create email body and send it

$email_body = "You have received a new message. \n\n".

"Here are the details:\n \nName: $name \n ".

"Email: $email_address\n \nPhone: $phone \n".

"Message: $message \n ";$email = new PHPMailer();
$email->From      = $email_address;
$email->FromName  = $name;
$email->Subject   = $email_subject;
$email->Body      = $email_body;
$email->AddAddress( 'gslonina7@gmail.com' );
$email->AddAttachment( $target_file );

return $email->Send();

?>

<form role="form" action="mail_consignment_new.php" class="contact-form validation-engine ajax-send">
<div class="row">
<div class="col-sm-4 form-group">
<label class="sr-only" for="input_name">Name *</label>
<input type="text" name="name" class="form-control validate[required]" id="input_name" placeholder="Name *">
</div>
<div class="col-sm-4 form-group">
<label class="sr-only" for="input_email">Email *</label>
<input type="email" name="email" class="form-control validate[required,custom[email]]" id="input_email" placeholder="Email *">
</div>
<div class="col-sm-4 form-group">
<label class="sr-only" for="input_subject">Phone</label>
<input type="text" name="phone" class="form-control" id="input_phone" placeholder="Phone">
</div>
</div>

<div class="form-group">
<label class="sr-only" for="uploaded_file">Select A File To Upload:</label>
<input type="file" name="uploaded_file">
</div>

<div class="form-group">
<label class="sr-only" for="input_message">Message</label>
<textarea name="message" class="form-control validate[required]" rows="7" id="input_message" placeholder="Message"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default btn-wide">Send</button>
<span class="loading-spinner" style="display:none;"></span>
</div>
</form>

1

Решение

Основывайте свой код на примерах, предоставленных PHPMailer, в частности пример основной контактной формы. Похоже, вы использовали устаревший из других, и есть много основных ошибок.

Никогда используйте предоставленный пользователем адрес в качестве адреса отправителя. Это подделка, и ваши сообщения не будут доставлены, так как вы не пройдете проверку SPF. Введите свой адрес в качестве адреса отправителя, а адрес отправителя — в качестве адреса для ответа.

То, как вы обрабатываете загруженный файл, также неверно — обратитесь к руководству по PHP. Вы снова доверяете вводу пользователя, и поэтому там потенциально уязвимы; Вы должны проверить загруженный файл, используя is_uploaded_file или же move_uploaded_file — пример называется send_file_upload показывает, как безопасно обрабатывать загрузку.

$target_dir = "/uploads/";

Это не относительный путь — если /uploads действительно существует в корне вашей файловой системы (что маловероятно), ваш путь будет неправильным. Создайте его как относительный путь или выясните, откуда вы начинаете, например, один из них:

$target_dir = "./uploads/";
$target_dir = __DIR__ . "/uploads/";

Наконец, методы PHPMailer обычно возвращают true в случае успеха, поэтому вы можете проверить, например, призыв к addAttachment удалось или нет.

0

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

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

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