После того, как почтовые сервисы перешли на свою строгую политику, многие клиенты стали жаловаться, что письма с интернет-магазина падают как минимум в спам, а в худшем случае,
В итоге мы составили кое-какой алгоритм подключения этого дела к системе Okay.
Итак, шаг номер раз: скачиваем библиотеку PHPMailer с гита.
Шаг номер два: загружаем папку библиотеки в папку api самой системы и подключаем ее к ней.
Для этого нам надо сделать вот такие манипуляции:
В классе Notify.php подключаем библиотеку вот таким образом:
require('PHPMailer/class.phpmailer.php');
include('PHPMailer/class.smtp.php');
После этого меняем стандартную функцию mail на вот такую:
public function SMTP($to, $subject, $message,$headers){
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = ''.$this->settings->smtp_server.''; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = $this->settings->smtp_port; // set the SMTP port for the GMAIL server
$mail->Username = ''.$this->settings->smtp_user.''; // SMTP account username
$mail->Password = ''.$this->settings->smtp_pass.''; // SMTP account password
$mail->SetFrom($this->settings->smtp_user, $this->settings->user_pseudo);
$mail->AddReplyTo($this->settings->smtp_user,$this->settings->user_pseudo);
$mail->Subject = $subject;
$mail->MsgHTML($message);
$mail->addCustomHeader("MIME-Version: 1.0n");
$recipients = explode(',',$to);
if(!empty($recipients)){
foreach($recipients as $i=>$r){
$mail->AddAddress($r);
}
}
else{
$mail->AddAddress($to);
}
if(!$mail->Send()) {
@file_put_contents('error_log.txt',$mail->ErrorInfo);
}
}
function email($to, $subject, $message, $from = '', $reply_to = '')
{
$headers = "MIME-Version: 1.0n" ;
$headers .= "Content-type: text/html; charset=UTF-8; rn";
$headers .= "From: $fromrn";
if(!empty($reply_to))
$headers .= "reply-to: $reply_torn";
$subject = "=?utf-8?B?".base64_encode($subject)."?=";
if($this->settings->use_smtp){
$this->SMTP($to, $subject, $message, $headers);
}
else{
@mail($to, $subject, $message, $headers);
}
}
И по факту, исполняющая часть у вас готова. Здесь добавлен регулятор в виде конструкции if, который позволит админу самому переключать способ отправки, это либо функиция mail, либо протокол SMTP.
После этого «допилим» административную часть, и добавим поля:
Идем в папку backend/design/html и открываем файл settings.tpl, в конец которого добавляет вот такой кусок кода:
<div class="block layer">
<h2>Настройки SMTP почты</h2>
<ul>
<li>
<label class="property" >SMTP Почта</label>
<select name="use_smtp">
<option value="1" {if $settings->use_smtp == 1}selected=""{/if}>Да</option>
<option value="0" {if $settings->use_smtp == 0}selected=""{/if}>Нет</option>
</select>
<label class="property" >SMTP Server</label>
<input name="smtp_server" class="okay_inp" value="{$settings->smtp_server}" type="text" />
<label class="property" >SMTP Port</label>
<input name="smtp_port" class=" okay_inp " value="{$settings->smtp_port}" type="text" />
<label class="property" >SMTP Пользователь</label>
<input name="smtp_user" class=" okay_inp " value="{$settings->smtp_user}" type="text" />
<label class="property" >SMTP Пароль</label>
<input name="smtp_pass" class=" okay_inp " value="{$settings->smtp_pass}" type="text" />
<label class="property" >Имя отправителя</label>
<input name="user_pseudo" class=" okay_inp " value="{$settings->user_pseudo}" type="text" />
</li>
</ul>
</div>
После чего получаем вот такой вид внешне:
И добавляет обработчик данных полей в файл backend/SettingsAdmin.php
$this->settings->smtp_server = $this->request->post('smtp_server');
$this->settings->smtp_port = $this->request->post('smtp_port');
$this->settings->smtp_user = $this->request->post('smtp_user');
$this->settings->smtp_pass = $this->request->post('smtp_pass');
$this->settings->use_smtp = $this->request->post('use_smtp');
$this->settings->user_pseudo = $this->request->post('user_pseudo');
На этой программная часть закончилась, и все бы хорошо, но настройка этого дела требует иногда нервных усилий.
Краткий список действий будет таков:
1. Зарегистрировать почту для домена (например на яндексе)
2. Переключить MX записи почтовой службы на
3. Узнать у
4. Указать логин и пароль в админке
5. Пользоваться подписанным ящиком, и отправлять письма от «подписанного» отправителя
Автор: m1hasik