Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

проблема с отправкой файлов через phpmailer

Подскажите плз как отправлять файлы с помощью phpmailer через форму обратной связи.
Я раскомментировал строку:
$mail->AddAttachment($path_to_attachement)
Пробовал присваивать $path_to_attachement непосредственно значение:
$path_to_attachement = "D:/bg.jpg";
Но результат один и тот же:
"Нет доступа к файлу: D:/bg.jpg"


а если вот так

$mail->AddAttachment('D:/bg.jpg', 'bg.jpg');



а если вот так

$mail->AddAttachment('D:/bg.jpg', 'bg.jpg');

То же самое. Второй параметр опциональный т.е. можно его не указывать.
Еще в дополнение получаю такую ошибку:
Warning: Cannot modify header information - headers already sent by (output started at ......../phpmailer/class.phpmailer.php:1370) in /home/kravain ......./functions/include.php on line 1203


так чтож вы указываете локальный путь, если еще нужно залить на сервер


залейте файл на сервер и там уже пробуйте его отправлять


Просто это форма обратной связи, предварительно залить не получится.
Да и зачем временные файлы на сервере хранить.



Просто это форма обратной связи, предварительно залить не получится.
Да и зачем временные файлы на сервере хранить.


через php нельзя получить доступ к файлу, который у вас лежит на локальном компе

его можно с помощью формочки отправить на сервер, а там уже отправить на почту и сразу можно удалять


Я файл загружаю через input тег:
$osTemplate->assign('INPUT_IMAGE', os_draw_input_field('img_file', '', '', 'file', ''));

Потом передаю функции os_php_mail  пераметр $_FILES['img_file']['tmp_name']
os_php_mail($_POST['email'], $_POST['name'], CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], $_FILES['img_file']['tmp_name'], '', $subj_mail, nl2br($body_text), $body_text);

По идее должно все работать без предварительной загрузки, или я не прав?


так $_FILES['img_file']['tmp_name'] - это уже загруженный файл


Все решилось гораздо проще, обязательно надо добавить в начале формы атрибут enctype="multipart/form-data" для тега <form>
У меня получилось вот так:
$osTemplate->assign('FORM_ACTION', os_draw_form('contact_us', os_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID']), 'post' , 'enctype="multipart/form-data"'));
После этого phpmailer свободно подхватывал файлы через форму без всяких предварительных загрузок и отправлял их на почту.
Ось таке :)


Источник



Copyright ShopOS