Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

 

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

 

Сделал вот форму запроса 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 1
Надіслати
Поділитися на інших сайтах

 

 

Большое спасибо за помощь. В общих чертах понял с этим скриптом, но не могли бы немного разъяснить по поводу $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
Надіслати
Поділитися на інших сайтах

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

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

<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 2
Надіслати
Поділитися на інших сайтах

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

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

<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 на телефон администратора)

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

Надіслати
Поділитися на інших сайтах

  • 2 years later...

Добрый день! Появилась необходимость что-бы копия всего этого добра еще дублировалась на email из заполненного поля email . Как возможно это реализовать?

 

$mail->setTo($this->config->get('config_email'));

Тут все понятно email уходит на почту администратора.

 

Как добавить?


$mail->setTo($this->request->post['email']);

Ну или может в функции mail есть отправка письма в скрытую копию. Не могу сообразить. Подскажите, пожалуйста.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.