Регистрация
Вход через соцсети
Восстановление пароля

Как прикрепить файлы к письму ?

Новый топик
24.06.2015, 09:27
Ответить | Цитировать
Rustam

Зарегистрирован:
2015-06-24
Сообщений: 11

Есть компонент "Множественный выбор файлов" в который загружаются от 1 до 10 изображений
после заполнения формы, данные из инпутов и изображения должны отправляться на почту

название поля imgup
в действие после добавления объекта добавил следующий код
отправляется файл с размером 0 байт

$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags("Оценка кузовного ремонта по фото\r\nФИО: $f_fio\r\nТелефон: $f_tel\r\nМарка и модель: $f_marka\r\nОписание: $f_opisanie\r\nЭвакуатор: ($f_evakuator==1?'Требуется':'Не требуется')\r\nФото: $f_imgup"));

$mailer->attachFile($DOCUMENT_ROOT.$f_imgup_url, $f_imgup_name, "application/octet-stream");

$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), "klient@mail.ru", "klient@mail.ru", 'Письмо с сайта: Оценка кузовного ремонта по фото', 'Клиент');

Подскажите что нужно изменить что-бы файлы из этого поля отправлялись в аттаче на почту ?

($f_evakuator==1?'Требуется':'Не требуется') это условие тоже не работает в поле mailer
в админке это условие работает и выводится нужное значение
26.06.2015, 22:14
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Попробуйте вот так переделать:
Код:

$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags("Оценка кузовного ремонта по фото\r\nФИО: $f_fio\r\nТелефон: $f_tel\r\nМарка и модель: $f_marka\r\nОписание: $f_opisanie\r\nЭвакуатор: ".($f_evakuator?'Требуется':'Не требуется')."\r\n"));
foreach($files_data as $file_object) {
$mailer->attachFile($DOCUMENT_ROOT . $file_object->Path, $file_object->Name ? $file_object->Name : "Вложение", "application/octet-stream");
}
$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), "klient@mail.ru", "klient@mail.ru", 'Письмо с сайта: Оценка кузовного ремонта по фото', 'Клиент');





29.06.2015, 06:17
Ответить | Цитировать
Rustam

Зарегистрирован:
2015-06-24
Сообщений: 11

Спасибо за ответ, условие заработало результат отправляется на почту
".($f_evakuator?'Требуется':'Не требуется')."

но файлы не отправляются приходит письмо без вложений, если убрать цикл foreah приходит файл размером 0 байт

может для этих целей есть другой тип поля в которое можно отправить от 1 до 10 изображений с отправкой на email?
29.06.2015, 06:39
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Тогда перед foreach поставьте такую конструкцию:
Код:

$upfiles = nc_load_multifield(XXXX, $message);
$files_data = $upfiles->to_array();

где XXXX - номер поля imgup в компоненте. Думаю, уж после этого-то точно заработает.улыбка

30.06.2015, 15:21
Ответить | Цитировать
Rustam

Зарегистрирован:
2015-06-24
Сообщений: 11

Сработало) теперь все файлы отправляются, но без расширения файла jpg, png и.тд
изменил Name : "Вложение" на Name : $file_name проблема решилась
теперь все изображения имеют имя первого файла, все 10 файлов с одним именем и расширением
30.06.2015, 17:49
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

$file_name использовать нельзя, ведь там цикл идет.
Если вы хотите приводить имя физического файла, когда не заполнен комментарий к файлу, тогда нужно соответствующую строчку переделать таким образом:
Код:

$mailer->attachFile($DOCUMENT_ROOT . $file_object->Path, $file_object->Name ? $file_object->Name : pathinfo($file_object->Path, PATHINFO_BASENAME), "application/octet-stream");


30.06.2015, 21:20
Ответить | Цитировать
Rustam

Зарегистрирован:
2015-06-24
Сообщений: 11

Большое спасибо, данная строчка помогла, файлы отправляются с правильным именем.
198 196 2015-06-30 21:20:40 14206
Описание проекта