Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

Всем привет,

 

Может быть кому-то бугдет полезно, как послать файл вместе с сообещёнием со страницы Связаться с нами в 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 символов".

Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...

Хочу добавить для 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');
}
Тогда пустые письма будут отправляться...
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.