Jump to content
alferus

Возможность прикрепить файл к форме в контактах (file attach)

Recommended Posts

Всем привет,

 

Может быть кому-то будет полезно, как послать файл вместе с сообщением со страницы Связаться с нами в Opencart. Тестировалось на OcStore 1.5.5.1.2.

 

Сначала добавим кнопку выбора в файле "../catalog/view/theme/*/template/information/contact.tpl" в нужное нам место:

<input type="file" name="file">

Затем используем следующий код для файла "../catalog/controller/information/contact.php":

$mail = new Mail();
	$mail->protocol = $this->config->get('config_mail_protocol');
	$mail->parameter = $this->config->get('config_mail_parameter');
	$mail->hostname = $this->config->get('config_smtp_host');
	$mail->username = $this->config->get('config_smtp_username');
	$mail->password = $this->config->get('config_smtp_password');
	$mail->port = $this->config->get('config_smtp_port');
	$mail->timeout = $this->config->get('config_smtp_timeout');				
	$mail->setTo($this->config->get('config_email'));
	$mail->setFrom($this->request->post['email']);
	$mail->setSender($this->request->post['name']);
			
	    if (file_exists($_FILES['file']['tmp_name'])) {               
            $tempdir = (DIR_DOWNLOAD)."/temp/";
            $fileName = $_FILES['file']['name'];
            $imageTemp = $tempdir.$fileName;
            move_uploaded_file($_FILES['file']['tmp_name'], $tempdir.$fileName);      
            $mail->addAttachment($tempdir.$fileName);
            	}      
		 
	$mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));
	$mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
	$mail->send();
      	    unlink($tempdir.$fileName);
	$this->redirect($this->url->link('information/contact/success'));

При этом обязательно нужно создать папку "temp":  "../download/temp/" куда будет забрасываться файл и удаляться после отправки письма. Код простой и не очень безопасный, так как не ограничивает тип файла и размер.

 

Для себе еще модернизировал его, чтобы можно было отправить письмо без текста (указаны только имя, почта и прикреплен файл), для этого надо заменить:

$mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));

на следующий код:

if (utf8_strlen($this->request->post['enquiry']) > 0) {$mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));}
else {$mail->setText(strip_tags(html_entity_decode($enquiry = ' ', ENT_QUOTES, 'UTF-8')));}

Но не забудьте тогда поменять сообщение об ошибке на "Файл должен содержать не более 3000 символов" вместо "Файл должен быть от 3 до 3000 символов".

Share this post


Link to post
Share on other sites

Хочу добавить для 1.5.6 версии еще нужно поменять контроль проверочного поля:

if ((utf8_strlen($this->request->post['enquiry']) < 10) || (utf8_strlen($this->request->post['enquiry']) > 3000)) {
$this->error['enquiry'] = $this->language->get('error_enquiry');
}
На:

if ((utf8_strlen($this->request->post['enquiry']) < 0) || (utf8_strlen($this->request->post['enquiry']) > 3000)) {
$this->error['enquiry'] = $this->language->get('error_enquiry');
}
Тогда пустые письма будут отправляться...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By leealex
      View File


      Трекер Plum Trackcode (vQmod)
      Это дополнение дает возможность владельцу магазина и покупателям отслеживать свои посылки при помощи трек-кодов на сайтах: "Где посылка" и "Моя посылка".
      Администратор может указать трек-код на странице истории заказа, после чего покупатель в своем кабинете видит этот код и может перейти на сайт отслеживания посылки, кликнув по соответствующей ссылке.
      Кроме того при изменении статуса заказа покупателю отправляется письмо на email со ссылкой для отслеживания посылки.
      Для работы этого дополнения необходим vQmod
      Инструкция по установке vQmod:
      1. Скачайте актуальную версию vQmod по ссылке:
      http://code.google.com/p/vqmod
      2. Используя FTP, загрузите папку "vqmod" из архива в корневую директорию магазина.
      3. Убедитесь в правильности установленных прав на запись папок vqmod и vqmod/vqcache (755 или 777).
      Также index.php и admin/index.php должны быть доступны для записи.
      Если не уверены какие права установить, то попробуйте сначала 755.
      Если возникнут ошибки, то поменяйте на 777.
      4. Перейдите по адресу http://www.yoursite.com/vqmod/install
      5. Вы должны увидеть сообщение об успешной установке. Если нет, то проверьте права на запись и попробуйте снова.
      6. Загрузите главную страницу магазина чтобы убедиться в нормальной работе сайта.
      7. В папке "vqmod/vqcache" должны появиться файлы "vq".
      8. Если да, то ваш сайт готов к установке vQmod расширений.
      Установка Plum Trackcode:
      1. Скопировать все из папки Upload в корень вашего сайта.
      Тестировалось на ocStore 1.5.4.1
      Submitter leealex Submitted 02/04/2013 Category Модули Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.5.1 ocStore 1.5.4.1 OpenCart.Pro, ocShop Get request to server of developer Нет  
    • By leealex
      Это дополнение дает возможность владельцу магазина и покупателям отслеживать свои посылки при помощи трек-кодов на сайтах: "Где посылка" и "Моя посылка".
      Администратор может указать трек-код на странице истории заказа, после чего покупатель в своем кабинете видит этот код и может перейти на сайт отслеживания посылки, кликнув по соответствующей ссылке.
      Кроме того при изменении статуса заказа покупателю отправляется письмо на email со ссылкой для отслеживания посылки.
      Для работы этого дополнения необходим vQmod
      Инструкция по установке vQmod:
      1. Скачайте актуальную версию vQmod по ссылке:
      http://code.google.com/p/vqmod
      2. Используя FTP, загрузите папку "vqmod" из архива в корневую директорию магазина.
      3. Убедитесь в правильности установленных прав на запись папок vqmod и vqmod/vqcache (755 или 777).
      Также index.php и admin/index.php должны быть доступны для записи.
      Если не уверены какие права установить, то попробуйте сначала 755.
      Если возникнут ошибки, то поменяйте на 777.
      4. Перейдите по адресу http://www.yoursite.com/vqmod/install
      5. Вы должны увидеть сообщение об успешной установке. Если нет, то проверьте права на запись и попробуйте снова.
      6. Загрузите главную страницу магазина чтобы убедиться в нормальной работе сайта.
      7. В папке "vqmod/vqcache" должны появиться файлы "vq".
      8. Если да, то ваш сайт готов к установке vQmod расширений.
      Установка Plum Trackcode:
      1. Скопировать все из папки Upload в корень вашего сайта.
      Тестировалось на ocStore 1.5.4.1
    • By shchs
      1 300.00 руб
      Скачать/Купить дополнение


      Почтовая рассылка PRO для 2.x.x
      Описание Модуля:
      Данное дополнение создано для замены стандартной почтовой рассылки, входящей в состав магазина.
      Имеет широкий функционал и может быть использовано как полноценный инструмент маркетинга.
       
      1. Позволяет указывать таймаут между отправками и количество писем в одной отправке. (для соблюдения лимитов хостинга)
      2. Отдельные почтовые настройки для отправки.
      3. Не боится отсутствие адреса у клиента - они сразу фильтруются в выборке.
      4. Возможность создавать свои списки (группы) для рассылки.
      5. Статистика по отправленным письмам (прочтения, переходы, отписки).
      6. Отправка писем по расписанию (cron).
      7. Возможность прикреплять файлы к письму.
      8. Возможность прикреплять товары. (используется отдельная tpl-ка, можно потом оформить под дизайн вашего магазина).
      9. Проверка письма на вероятность спама с помощью сервиса www.isnotspam.com и www.mail-tester.com
      10. Указание нескольких адресов отправителя и использование их в случайном порядке.
      11. Выборка получателей с учетом страны и региона.
      12. Наглядная информация о процессе отправки, сколько отправлено, сколько всего в очереди.
      13. Обращение по имени с помощью спец. тегов, типа {name} {firstname} {lastname}.
      14. Вставка ссылки "отписаться".
      15. Свой расширенный лог отправки с записью адресов получателей и возникших проблем.
      16. Сохранение и использование шаблонов письма.
      17. Создание произвольного списка e-mail адресов получателей.
      18. Импорт адресов с любой таблицы sql-базы магазина.
      19. Проверка адресов на существование.
      20. Чтение входящих сообщений (beta).
       
      В целях организации выборки получателей применяется два понятия:
      Зарегистрированные - те, кто зарегистрирован у вас на сайте
      Покупатели - те, кто реально что-то покупал, независимо от регистрации, адреса берутся из заказов со статусом завершенного.
       
      Для того чтобы правильно указать таймауты для рассылки, напишите письмо в поддержку вашего хостинга с вопросом,
      какие ограничения установлены для рассылки писем с сайта.
       
      Для работы заданий у вас на хостинге должен быть настроен CRON на открытие ссылки для запуска через каждые 30 минут.

      Известные несовместимости (ограничения):
      1. Возможности и результаты функционала проверки существования адресов получателей сильно зависят как от почтовых серверов,
      так и от хостинга, на котором работает данный модуль. Поэтому результаты носят рекомендуемый характер и не претендуют на истину.
       
      Условия приобретения:
      1. Данное дополнение распространяется по принципу 1 лицензия - 1 домен + 1 тестовый домен.
      2. Поддомены считаются отдельным доменом!
      3. Тестовым доменом может быть только либо технический адреса хостинга, либо поддомен "test" основного домена.
      4. Модуль распространяется по принципу "как есть", со всеми его особенностями, достоинствами
      и недостатками, как имеющимися в данный момент так и выявленными в будущем, поэтому
      любые исправления или изменения модуля возможны только по воле автора и никак иначе.
      5. В модуле используется технология защиты, препятствующая несанкционированному использованию модуля,
      а также ограничивающая изменение файлов с его кодом.
      6. Данная защита не снимается ни при каких условиях.
      7. Применение средств и методов, позволяющих обойти используемую технологию защиты, являются незаконными.
      8. Лицензия возврату не подлежит!
      9. Продукт не является бесплатным программным обеспечением и не может распространяться в какой-либо форме где-либо без письменного согласия автора.
       
      Условия Тех.поддержки:
      1. Вопросы по поддержке вы также можете задавать по почте shchs@ya.ru, либо по скайпу: ashchs
      2. Активация дополнениея выполняется в течении суток с момента покупки.
      3. Тех.поддержка оказывается в течении двух суток с момента поступления запроса.
       3.1 Тех.поддержка оказывается при предоставлении доступа в админ.панель и к файлам сайта по протоколу FTP.
      4. В условия тех.поддержки не входит:
       4.1 согласование работы дополнения с какими-то либо другими модулями.
       4.2 настройка и запуск дополниния на версиях opencart/ocstore отличных от явно заявленых.
       4.3 изменение работы или добавление каких-либо новых функций.
      5. Поддержка оказывается только легальным и добросовестным покупателям, купившим данный продукт непосредственно у автора,
      либо на  opencartforum.com
       
      Системные требования:
      1. Установленный на сервере IonCube loader последней версии
      2. Версия PHP минимум 5.4
      3. Opencart/Ocstore 2.x.x.x
       
      Приобретая данное дополнение, вы тем самым соглашаетесь с системными требованиями, ограничениями, условиями покупки и тех.поддержки.
       
      Демо:
      http://test4.shchs.bget.ru/admin/
      login: demo
      pass:  demo
      Добавил shchs Добавлено 27.11.2015 Категория Письма, почта, рассылки, sms Системные требования Ioncube Loader последней версии Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика  
    • By toporchillo
      Модуль позволяет в автоматическом режиме отслеживать статусы почтовых доставок
      и уведомлять покупателя об отправке и прибытии заказа.
      Для OpenCart 1.5.x. Требуется vQmod.
      Версия для OpenCart 2.x доступна здесь
      Если вы много заказов отправляете Почтой России или EMS. Если вы отправляете посылки наложенным платежом, то вам необходимо быть в курсе того, где сейчас посылки. Чтобы покупатель не забыл про свой заказ, надо уведомлять его о доставке. Есть сервис отслеживания доставок почты России, но модуль делает все автоматически.
      Подробнее на странице: http://sourcedistillery.com/auto-tracking_pochty_rossii_opencart.html
      УСТАНОВКА
      1. Убедитесь, что у вас установлен и включен vQmod, либо вручную внесите изменения
      вносимые файлом vqmod/xml/vqmod_order_track_no.xml.
      2. Скопируйте содержимое папки upload в файловую систему сайта поверх структуры папок.
      3. Установка и настройка модуля доступна в системе администрирования, на странице
      Дополнения - Доставка - Автотреккинг доставок Почты России
      4. В планировщик задач CRON пропишите команду
      wget -O - http://{адрес сайте}/admin/rupost_updater.php   Достаточно запускать скрипт раз в сутки. По ночам скрипт запускать не надо, а то можете беспокоить покупателей ночными SMS.
      Модуль не содержит в себе SMS-шлюза. SMS будет отправляться только если у вас в OpenCart уже есть отправка каких-нибудь SMS.
      Веб-сервис Почты России, располагается по адресу:
      https://tracking.pochta.ru   Веб-сервис, к которому обращается модуль, требует аутентификации! Необходимо зарегистрироваться и получить логин и пароль для доступа.

      Без заключения корпоративного договора с Почтой вы можете делать не более 100 запросов в сутки, этого хватит на небольшое количество заказов.
    • By toporchillo
      800.00 руб
      Скачать/Купить дополнение


      Автоматическое отслеживание почтовых отправлений Почты России
      Модуль позволяет в автоматическом режиме отслеживать статусы почтовых доставок
      и уведомлять покупателя об отправке и прибытии заказа.
      Для OpenCart 1.5.x. Требуется vQmod.
      Версия для OpenCart 2.x доступна здесь
      Если вы много заказов отправляете Почтой России или EMS. Если вы отправляете посылки наложенным платежом, то вам необходимо быть в курсе того, где сейчас посылки. Чтобы покупатель не забыл про свой заказ, надо уведомлять его о доставке. Есть сервис отслеживания доставок почты России, но модуль делает все автоматически.
      Подробнее на странице: http://sourcedistillery.com/auto-tracking_pochty_rossii_opencart.html
      УСТАНОВКА
      1. Убедитесь, что у вас установлен и включен vQmod, либо вручную внесите изменения
      вносимые файлом vqmod/xml/vqmod_order_track_no.xml.
      2. Скопируйте содержимое папки upload в файловую систему сайта поверх структуры папок.
      3. Установка и настройка модуля доступна в системе администрирования, на странице
      Дополнения - Доставка - Автотреккинг доставок Почты России
      4. В планировщик задач CRON пропишите команду
      wget -O - http://{адрес сайте}/admin/rupost_updater.php   Достаточно запускать скрипт раз в сутки. По ночам скрипт запускать не надо, а то можете беспокоить покупателей ночными SMS.
      Модуль не содержит в себе SMS-шлюза. SMS будет отправляться только если у вас в OpenCart уже есть отправка каких-нибудь SMS.
      Веб-сервис Почты России, располагается по адресу:
      https://tracking.pochta.ru   Веб-сервис, к которому обращается модуль, требует аутентификации! Необходимо зарегистрироваться и получить логин и пароль для доступа.

      Без заключения корпоративного договора с Почтой вы можете делать не более 100 запросов в сутки, этого хватит на небольшое количество заказов.
      Добавил toporchillo Добавлено 17.03.2014 Категория Доставки Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop OcShop 1.5.6.4.х Обращение к серверу разработчика  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.