Jump to content
Sign in to follow this  
Sheedy

Не приходят письма на почту

Recommended Posts

Добрый вечер!  
Сайт: https://mertenshop.com.ua
Ostore 2.3
Сделал форму для быстрого заказа, но не получается отправить данные на почту. Помогите новичку, пожалуйста! 
Работает скрипт открытие и закрытие popup окошока, а с отправкой письма на почту не выходит. Я не могу понять, где проблема, потому что отдельно от всего сайта всё работает и приходит (https://mertenshop.com.ua/test/html-form.html) , а в шапке сайта ничего не происходит (

<div class="callback-request">
								<div class="callback-button" rel="popup1"> Заказать звонок </div>

							<!--POPUP-->
							<div class="overlay_popup"></div>	
						<div class="popup-container"id="popup1">
							
							<form class="callback-form" id="callback-form" name="callback-form">
									<div class="form-row">
										<label class="name-icon" for="name"></label>
										<input type="text" class="send-field" name="name" placeholder="Ваше имя" value="" id="name">
									</div>
									<div class="form-row">
										<label class="phone-icon" for="phone"></label>
										<input type="text" placeholder="Ваш телефон" value="" id="phone" name="phone"  class="send-field phone">
									</div>

						<div class="form-submit">
							<input type="submit" value="заказать" class="submit-button send-field" name="callback_submit">
						<div class="results1"></div>

								<div class="popup-form-preload"></div>
							</form>
							</div>
						</div>
						<div class="popup-result">
							<div class="close">+</div>
								<div class="popup-result-content">Ваш запрос успешно отправлен!</div>
						</div>
						<!--POPUP-->
					</div>
<?php

$recepient = "[email protected]";
$siteName = "Ajax-форма";

$name = trim($_POST["name"]);
$phone = trim($_POST["phone"]);
$message = "Имя: $name \nТелефон: $phone";

$pagetitle = "Заявка с сайта \"$siteName\"";
 mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient"); 

?>
//открыть и закрыть popup 
	$('.callback-button').click(function() {
    var popup_id = $('#' + $(this).attr("rel"));
    $(popup_id).show();
    $('.overlay_popup').show();
})
$('.overlay_popup').click(function() {
    $('.overlay_popup, .popup-container').hide();
})
// Отправка заявки 
$(document).ready(function() {
	$('#callback-form').submit(function() { // проверка на пустоту заполненных полей. Атрибут html5 — required не подходит (не поддерживается Safari)
		if (document.form.name.value == '' || document.form.phone.value == '' ) {
			valid = false;
			return valid;
		}
		$.ajax({
			type: "POST",
			url: "/formpopup/mail.php",
			data: $(this).serialize()

		}).done(function() {
			
			$(this).find('input').val('');
			$('#callback-form').trigger('reset');
		});
		return false;
	});
});
/*
// Закрыть попап «спасибо»
$('.close').click(function() { // по клику на крестик
	$('.popup-result').fadeOut();
});

$(document).mouseup(function (e) { // по клику вне попапа
    var popup = $('.popup');
    if (e.target!=popup[0]&&popup.has(e.target).length === 0){
        $('.popup-result').fadeOut();
    }
});*/

// Маска ввода номера телефона (плагин maskedinput)
$(function($){
	$('[name="phone"]').mask("+38(999) 999-9999");
});

 

Share this post


Link to post
Share on other sites

Где-то накосячили

Share this post


Link to post
Share on other sites

в opencart есть встроенная библиотека для отправки писем, а SMTP почта настраивается в админке.

Возьмите пример отправки письма, например из catalog/model/checkout/order.php

$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($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($this->load->view('mail/order', $data));
$mail->setText($text);
$mail->send();

так в 2018 году отправляются письма.

а о функции mail лучше забыть.

Share this post


Link to post
Share on other sites
4 часа назад, TeslaFeo сказал:

в opencart есть встроенная библиотека для отправки писем, а SMTP почта настраивается в админке.

Возьмите пример отправки письма, например из catalog/model/checkout/order.php

$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($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($this->load->view('mail/order', $data));
$mail->setText($text);
$mail->send();

так в 2018 году отправляются письма.

а о функции mail лучше забыть.

А есть документация по встроенной библиотеке, а то нужно разобраться сначала) 

Share this post


Link to post
Share on other sites
3 часа назад, Sheedy сказал:

А есть документация по встроенной библиотеке, а то нужно разобраться сначала) 

это PHPMailer. По нему есть инфа в гугле :)

По названиям методов понятно, что зачем нужно.

На деле, всё примерно так:
 

$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'));  // email получателя.
$mail->setFrom($this->config->get('config_email'));  //  email отправителя.
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); // Имя отправителя
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));  //  Тема письма
$mail->setHtml($this->load->view('mail/order', $data));  html шаблон письма
$mail->setText($text); //  альтернативный текст письма. Будет отображаться в случае, если почновый клиент получателя не поддерживает html письма.
$mail->send();

Вот и вся документация :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • 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.