Перейти к содержанию
lavrentyev

Как настройть отправку на почту данных с формы?

Рекомендуемые сообщения

 

Доброго времени суток!

 

Сделал вот форму запроса http://joxi.ru/l2ZM4kEIWzdgmJ

 

Теперь не совсем понимаю как настроить отправку на почту данных этой формы. Пытался подключать внешний mail.php но как-то не вышло и вообще все криво.

 

Может быть можно реализовать отправку данных этой формы через настройки в opencart? Например так как используется в Обратной связи?

 

Если можно подскажите как это сделать!!!

Поделиться сообщением


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

так смотрите как отправляется через обратную связь и делайте по аналогии

Поделиться сообщением


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

Ок. Значит думаю в правильном направлении. Буду заниматься. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$mail                = new Mail();
$mail->protocol      = $this->config->get('config_mail_protocol');
$mail->parameter     = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port     = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout  = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($this->language->get('text_mail_subject'), ENT_QUOTES, 'UTF-8'));
$mail->setHtml(nl2br($message));
$mail->setText($message);
$mail->send();

Решение для OpenCart 2, где $message - сообщение.

  • +1 2

Поделиться сообщением


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

Большое спасибо за помощь. В общих чертах понял с этим скриптом, но не могли бы немного разъяснить по поводу $message

Поделиться сообщением


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

 

 

Большое спасибо за помощь. В общих чертах понял с этим скриптом, но не могли бы немного разъяснить по поводу $message

 

$message все поля с формы которые будут отправлены

 

$message = '';

$message .= "Имя: USER \n\r"; 

$message .= "...";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$mail                = new Mail();
$mail->protocol      = $this->config->get('config_mail_protocol');
$mail->parameter     = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port     = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout  = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($this->language->get('text_mail_subject'), ENT_QUOTES, 'UTF-8'));
$mail->setHtml(nl2br($message));
$mail->setText($message);
$mail->send();

Решение для OpenCart 2, где $message - сообщение.

 

Подскажите а куда этот код вставлять? тоже сделал форму во всплывающем окне на html а как подключить скрипт чтобы письма с нее оправлялись?

Поделиться сообщением


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

Подскажите а куда этот код вставлять? тоже сделал форму во всплывающем окне на html а как подключить скрипт чтобы письма с нее оправлялись?

передать аяксом, принять пост параметры, очистить и отпивать 

Поделиться сообщением


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

передать аяксом, принять пост параметры, очистить и отпивать 

а что за аякс такой?)

Поделиться сообщением


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

ajax

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

 

<div id="container">
<div id="contact-form" style="margin:auto;width:300px;height:210px;z-index:3;">
<form action="contact.php" method="post" enctype="multipart/form-data" class="ControllerModulePopupCallPhone">
<input type="text" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" name="telephone" value="" placeholder="Телефон" id="input-payment-telephone" class="form-control">
<input type="text" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" name="firstname" value="" placeholder="Имя" id="input-payment-firstname" class="form-control">
<input type="submit" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" id="journal-checkout-confirm-button" data-loading-text="Выполнение" class="button confirm-button">
</form>
 
а вот что сделать чтоб заработало не как не понятно, весь нет перерыл но пока не че не нашел, не получается че то обработчик подключить))

Поделиться сообщением


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

 

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

 

<div id="container">
<div id="contact-form" style="margin:auto;width:300px;height:210px;z-index:3;">
<form action="contact.php" method="post" enctype="multipart/form-data" class="ControllerModulePopupCallPhone">
<input type="text" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" name="telephone" value="" placeholder="Телефон" id="input-payment-telephone" class="form-control">
<input type="text" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" name="firstname" value="" placeholder="Имя" id="input-payment-firstname" class="form-control">
<input type="submit" style="margin:5px;margin-left:5%;width:260px;height:47px;line-height:47px" id="journal-checkout-confirm-button" data-loading-text="Выполнение" class="button confirm-button">
</form>
 
а вот что сделать чтоб заработало не как не понятно, весь нет перерыл но пока не че не нашел, не получается че то обработчик подключить))

 

Это приодеться долго и нудно объяснять, а время == деньги, так что гуглите форма обратной связи 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$mail                = new Mail();
$mail->protocol      = $this->config->get('config_mail_protocol');
$mail->parameter     = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port     = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout  = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($this->language->get('text_mail_subject'), ENT_QUOTES, 'UTF-8'));
$mail->setHtml(nl2br($message));
$mail->setText($message);
$mail->send();

Решение для OpenCart 2, где $message - сообщение.

 

Я прошу прощения за глупые вопросы, но  еще учусь. Пожалуйста подскажите где этот скрипт должен размещаться?

И как я понял в $message нужно написать названия поля и переменную которой присваивается значение поля. Где нужно объявлять эти переменные?

Поделиться сообщением


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

Я прошу прощения за глупые вопросы, но  еще учусь. Пожалуйста подскажите где этот скрипт должен размещаться?

И как я понял в $message нужно написать названия поля и переменную которой присваивается значение поля. Где нужно объявлять эти переменные?

в контроллере который нужно создать 

  • +1 1

Поделиться сообщением


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

А. Не в том что уже есть для отображения страницы, а новый создать?

А как в атребуте action в форме сослаться на него?

Поделиться сообщением


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

Примерный костяк:

В шаблон пилите такое:

<div id="form">
	<form id="z">
		<input type="text" placeholder="Ваше имя" name="n">
		<input type="text" placeholder="+38(__)___-__-__" name="t">
		<textarea placeholder="Комментарий" name="c"></textarea>
		<div class="send_form">Отправить</div>
	</form>
</div>
<script type="text/javascript"><!--
	$('.send_form').click(function() {
		$.ajax({
			url: 'index.php?route=common/header/send_form', //сюда пишите путь к контроллеру куда вставим код ниже
			type: 'post',
			data: $('#z input, #z textarea'),
			dataType: 'json',
			success: function(json) {
				if(json['error']){
					alert(json['error']);
				}			
				if(json['success']){
					$('.send_form').hide();
					$('.send_form').before('<span class="succ" style="color:green;font-weight:bold;">Вы успешно отправили заявку!</span>');
					setTimeout (function(){
						$('.succ').remove();
						$('.send_form').show('600');
					}, 3000);
				}
		
			}
		});
	});
//--></script>

И в контроллер такое:

	public function send_form() {

		$json = array();
		
		if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			if ((utf8_strlen($this->request->post['t']) < 6) || (utf8_strlen($this->request->post['t']) > 2500)) {
				$json['error'] = 'Заполните пожалуйста номер телефона';
			}
			if ((utf8_strlen($this->request->post['n']) < 3) || (utf8_strlen($this->request->post['n']) > 2500)) {
				$json['error'] = 'Пожалуйста, укажите Ваше имя';
			}			
			$text = '';
			if (!isset($json['error'])) {
				//send form
				if(!$this->request->post['c']) $this->request->post['n'] = 'Аноним';
				$html = '<h3>Письмо от '.$this->request->post['n'].'</h3>';
				if($this->request->post['n'])$html .= '<p><b>Имя:</b> '.$this->request->post['n'].'</p>';
				$html .= '<p><b>Телефон:</b> '.$this->request->post['t'].'</p>';
				if($this->request->post['c']) $html .= '<p><b>Комментарий:</b> '.$this->request->post['c'].'</p>';
				
				$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->config->get('config_email'));
				$mail->setSender($this->request->post['n']);
				$mail->setSubject(html_entity_decode('Тема письма от '.$this->request->post['n'], ENT_QUOTES, 'UTF-8'));
				$mail->setHtml($html);
				$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
				$mail->send();
				$json['success'] = true;
			}
		}
		
		$this->response->setOutput(json_encode($json));
	}	

Схема упрощена до безобразия - но главное что все отлично работает.

  • +1 1

Поделиться сообщением


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

Примерный костяк:

В шаблон пилите такое:

<div id="form">
	<form id="z">
		<input type="text" placeholder="Ваше имя" name="n">
		<input type="text" placeholder="+38(__)___-__-__" name="t">
		<textarea placeholder="Комментарий" name="c"></textarea>
		<div class="send_form">Отправить</div>
	</form>
</div>
<script type="text/javascript"><!--
	$('.send_form').click(function() {
		$.ajax({
			url: 'index.php?route=common/header/send_form', //сюда пишите путь к контроллеру куда вставим код ниже
			type: 'post',
			data: $('#z input, #z textarea'),
			dataType: 'json',
			success: function(json) {
				if(json['error']){
					alert(json['error']);
				}			
				if(json['success']){
					$('.send_form').hide();
					$('.send_form').before('<span class="succ" style="color:green;font-weight:bold;">Вы успешно отправили заявку!</span>');
					setTimeout (function(){
						$('.succ').remove();
						$('.send_form').show('600');
					}, 3000);
				}
		
			}
		});
	});
//--></script>

И в контроллер такое:

	public function send_form() {

		$json = array();
		
		if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			if ((utf8_strlen($this->request->post['t']) < 6) || (utf8_strlen($this->request->post['t']) > 2500)) {
				$json['error'] = 'Заполните пожалуйста номер телефона';
			}
			if ((utf8_strlen($this->request->post['n']) < 3) || (utf8_strlen($this->request->post['n']) > 2500)) {
				$json['error'] = 'Пожалуйста, укажите Ваше имя';
			}			
			$text = '';
			if (!isset($json['error'])) {
				//send form
				if(!$this->request->post['c']) $this->request->post['n'] = 'Аноним';
				$html = '<h3>Письмо от '.$this->request->post['n'].'</h3>';
				if($this->request->post['n'])$html .= '<p><b>Имя:</b> '.$this->request->post['n'].'</p>';
				$html .= '<p><b>Телефон:</b> '.$this->request->post['t'].'</p>';
				if($this->request->post['c']) $html .= '<p><b>Комментарий:</b> '.$this->request->post['c'].'</p>';
				
				$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->config->get('config_email'));
				$mail->setSender($this->request->post['n']);
				$mail->setSubject(html_entity_decode('Тема письма от '.$this->request->post['n'], ENT_QUOTES, 'UTF-8'));
				$mail->setHtml($html);
				$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
				$mail->send();
				$json['success'] = true;
			}
		}
		
		$this->response->setOutput(json_encode($json));
	}	

Схема упрощена до безобразия - но главное что все отлично работает.

Спасибо! Все себе вставил, изменил под себя, заполнил, отправил. Никакую ошибку не выдало ( и это радует), но меня переносит на главную страницу, а все, что я вводил в форме записало в адресной строке. Скриншот: http://joxi.ru/n2YBgxvT65v1A6

 

P.S Мне кажется, что я неправильно пишу url путь к контролеру в js скрипте.

Изменено пользователем lavrentyev

Поделиться сообщением


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

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

Поделиться сообщением


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

<div class="send_form">Отправить</div> - точно div-ом сделано а не кнопкой submit?

И посмотрите в запросах - идут запросы через ajax?

Поделиться сообщением


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

Понял. Попробую. Простите за глупый вопрос в запросах это где?

Поделиться сообщением


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

Нажимаете проинспектировать элемент (например кнопку отправки) и внизу http://prntscr.com/cjsywz или сбоку

А вообще если нет даже таких знаний то лучше уже заказать доработку чем самому делать.

Пробуйте или в ЛС договоримся

Поделиться сообщением


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

Да нет спасибо. Сам разберусь. Просто все мы узнаем когда-то в первый раз.

Поделиться сообщением


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

 - А Вы будете использовать отправку SMS сообщений, сообщающую о приходе письма на Вашу почту?

  (хотелось бы, что бы в этой теме затронули полную настройку почты на почту администратора + sms на телефон администратора)

Изменено пользователем Serg24

Поделиться сообщением


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

 - А Вы будете использовать отправку SMS сообщений, для отправки копии письма на Вашу почту?

  (хотелось бы, что бы в этой теме затронули полную настройку почты на почту администратора + sms на телефон администратора)

Там писанины хватает, так что особо никто расписывать не будет

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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