Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2017, 09:18   #1
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
Печаль Не приходит вложение из писем

Товарищи, здравствуйте!
Сижу уже больше суток с этой проблемой, выручайте

Вообще задача не сложная: необходимо отправить данные с формы с вложением фотографии которую добавляет пользователь.

http://irkbox.com/calculator/ - форма вот такая.

Для отправки использую phpmailer.

Код формы:

Код HTML:
<form class="remont" method="post" enctype="multipart/form-data">
 
<label>1. Введите марку автомобиля: </label>
<input type="text" placeholder="Введите марку автомобиля" name="marka"> 
<label>2. Введите модель автомобиля: </label>
<input type="text" placeholder="Введите модель автомобиля" name="model"span>> 
<label>3. Введите год выпуска автомобиля: </label>
<input type="text" placeholder="Введите год выпуска автомобиля" name="god"> 
<label>4. Введите контактный номер телефона: </label>
<input type="text" placeholder="Введите Ваш номер телефона" name="phone" required/> 
<label>4. Для более точного расчета Вы можете прикрепить фотографии: </label>
<input type="file" name="file" id="file"> 
<label>5.Как Вам будет удобно получить расчет стоимости: </label>
<div class="how-you">
<input type="checkbox" value="Позвоните мне" name="vid[]"> Позвоните мне <br/>
<input type="checkbox" value="Отправьте расчет по Viber" name="vid[]"> Отправьте расчет по Viber <br/>
<input type="checkbox" value="Отправьте расчет по WhatsApp" name="vid[]"> Отправьте расчет по WhatsApp <br/>
</div>
<hr/>
Выбрано элементов для ремонта: <span id="spa"> </span>
<table>
    <tr>
    <th>
    Деталь
    </th>
        <th>
    Покраска
    </th>
        <th>
    Ремонт
    </th>
        <th>
    Замена
    </th>
    </tr>
    </table>
    <table id="new">
    
    </table>
</div>
<div class="left-form">
 Выберите детали которые нуждаются в ремонте:
<?php echo do_shortcode('[xyz-ihs snippet="d1"]'); ?>
</div>
</form>
Код отправки формы:
PHP код:
<meta charset="UTF-8">
 
<?php 
require_once('class.phpmailer.php');
 
$mail = new PHPMailer();
$adminemail="***";
//$adminemail2="***";
 
 
$marka=$_POST['marka']; 
$model=$_POST['model']; 
$god=$_POST['god'];
$phone=$_POST['phone'];
$detal $_POST['detal'];
$photo $_FILES["pictures"];
$vid $_POST['vid'];
 
 
  if(!
is_array($_POST['detal'])){ 
  echo 
'Значение не массив';
  }
  else{
    
$msg=
    Марка автомобиля:
$marka,  <br/>
    Модель: 
$model,<br/>
    Год выпуска: 
$god <br/>
    Номер телефона для связи: 
$phone <br/>
    Выбранные детали:<br/>
    "
;
    foreach( 
$detal as $value){
    
$msg .= "$value<br />";
        }
    
$msg.="Как отправить расчет стоимости клиенту:<br/>";
        foreach (
$vid as $val){
        
$msg .= "$val<br />";
    }
    
    
 
    }
    
 
 
$body $msg;
 
$mail->AddAttachment ($_FILES['file']['tmp_name'], $_FILES['file']['name'];);
$mail->SetFrom('***'"***");
$mail->AddAddress("***""***");
$mail->Subject "From irkbox.com";
$mail->IsHTML(true); 
 
 
$mail->Body $body;
 
 
if(!
$mail->Send()){
  echo 
"Ошибка отправки письма: " $mail->ErrorInfo;
}else{
  echo 
"Письмо отправлено!";
}
  
?>
Письма приходят, но без вложения. Попробовал поставить во вложение просто картинку с хостинга по прямой ссылке, она доходит. Т.е. именно картинка с формы по какой-то причине не прикрепляется. Сайт написан на wordpress, я думаю может проблема в этом какая-нибудь...
GaLiof вне форума Ответить с цитированием
Старый 02.02.2017, 10:29   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Сам файл из формы загружается?
Ошибки при загрузке не выдаёт? Проверяли?
Пробовали сначала сохранить файл на сервере (move_uploaded_file) – а только потом добавлять его во вложение?

http://stackoverflow.com/a/11764230

Последний раз редактировалось Andkorol; 02.02.2017 в 11:42. Причина: Add SO link
Andkorol вне форума Ответить с цитированием
Старый 02.02.2017, 12:33   #3
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

Ну да, судя по всему вся проблема именно в том что он не может получить файл из формы. Но почему? Имена полей указаны верно. Ссылку которую вы скинули видел, вставлял конструкцию из нее, но эффекта не было...
GaLiof вне форума Ответить с цитированием
Старый 02.02.2017, 12:44   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Нужно смотреть ошибки при загрузке.
Что показывает var_dump($_FILES); в обработчике формы?
http://phpfaq.ru/debug
Andkorol вне форума Ответить с цитированием
Старый 02.02.2017, 12:58   #5
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

Так, если я не ошибаюсь, то вот такая строка пришла:
Код:
array(1) { ["file"]=> array(5) { ["name"]=> string(29) "foto-vremenno-otsutstvuet.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/php3uNbzZ" ["error"]=> int(0) ["size"]=> int(8049) } }
GaLiof вне форума Ответить с цитированием
Старый 02.02.2017, 13:19   #6
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

Ситуация такая:
когда отправляю форму на php через action="" файл приходит! Вот это поворот о_О
А когда через аякс то ничего нет.
Вот такой код у меня для отправки файла в js
Код:
jQuery("form.remont").submit(function() {
		jQuery.ajax({
			type: "POST",
			url: "http://irkbox.com/wp-content/themes/edge/contact.php",
			data: jQuery(this).serialize()
		}).done(function() {
			jQuery(this).find("input").val("");
			alert("Спасибо за обращение! Наши специалисты скоро с Вами свяжутся.");
			jQuery("form.remont").trigger("reset");
		});
		return false;
	});
Видимо проблема где то в нем..
GaLiof вне форума Ответить с цитированием
Старый 02.02.2017, 15:11   #8
GaLiof
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 52
По умолчанию

Спасибо, решение уже нашел) сериалайз нельзя файлам применять, заменил на такую конструкцию и все заработало)
data: new FormData(jQuery(this)[0]),
processData: false,
contentType: false
GaLiof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив потоков. Не приходит Terminate grb Общие вопросы Delphi 4 26.01.2015 10:19
Похоже, приходит - пипец. Smitt&Wesson Свободное общение 18 11.04.2014 16:29
Приходит не полный ответ Shouldercannon Общие вопросы Delphi 3 12.03.2010 21:45
Беда не приходит одна! Tayfun Свободное общение 6 30.12.2007 07:58