Настройка SMTP
Что такое SMTP?
SMTP — это протокол передачи почты (англ. Simple Mail Transfer Protocol). SMTP-сервер используется, когда надо отправить письмо с одной почты на другую.
Если вы изредка отправляете письма друзьям и коллегам через обычные почтовые интерфейсы Google, Mail.ru или Яндекс.Почта, то настройки SMTP не понадобятся: всё уже настроено и готово к использованию.
А если собираетесь заниматься почтовыми рассылками для клиентов, то пригодятся знания: как правильно настроить и использовать SMPT.
Подключение SMTP
- Регистрируемся на сайте smtp.bz
- В личном кабинете переходим в раздел домены отправителя
- Нажимаем добавить новый домен и вводим домен, к которому нужно подключить smtp
- Далее добавляем следующие записи в панели управления доменом:
- DKIM запись smtpbz._domainkey, тип TXT, значение:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvl8mj5p2hF+O23TmESAuwes/R5NJ6ryQ5KmrqdrZksS1BDrV+C7Xu1XuQMfm+QGarA6NU05DgDnpTAwLAUPAjYqPv7JqPxx8eY5vo2kJVUDmb+QnkNDIrXTSAVCrugG9OqQlUu+YId7YrEEIVSiFH6oJXME95hKdR5rJy3B3/uQIDAQAB
- SPF запись ваш домен (прим. domain.com), тип TXT, значение:
v=spf1 a mx include:spf.smtp.bz ~all
- CNAME запись "stats", тип CNAME, значение:
smtp.bz.
- После добавления вышеперечисленных записей, на сайте smtp.bz проходим верификацию записей, добавление записей на хостинге может занять до 72 часов.
- После прохождения верификации, необходимо сгенерировать ключ API. Для этого переходим в профиль аккаунта и ищем раздел сгенерировать Api ключ. Генерируем, сохраняем.
- Загружаем в корень сайта этот файл:
- smtp-bz.php
<?php if (!class_exists('Mail')) { class Mail { private $from; private $from_name = ""; private $type = "text/html"; private $encoding = "utf-8"; private $notify = false; private $errors = ''; /* Конструктор принимающий обратный e-mail адрес */ public function __construct($from) { $this->from = $from; } /* Изменение обратного e-mail адреса */ public function setFrom($from) { $this->from = $from; } /* Изменение имени в обратном адресе */ public function setFromName($from_name) { $this->from_name = $from_name; } /* Изменение типа содержимого письма */ public function setType($type) { $this->type = $type; } /* Нужно ли запрашивать подтверждение письма */ public function setNotify($notify) { $this->notify = $notify; } /* Изменение кодировки письма */ public function setEncoding($encoding) { $this->encoding = $encoding; } //email_from,email_from_name,email_to,subject,text /* Метод отправки письма */ public function send($to, $subject, $message) { global $name_project, $site; $smtp_api_key = 'uxeLBonxdZJAjRuSxRNXeEWCoTtU2YHmmLYN'; $fields = [ 'from' => 'support@' . server('SERVER_NAME'), 'name' => $name_project, 'subject' => $subject, 'to' => $to, 'html' => $message, ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.smtp.bz/v1/smtp/send'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['authorization: ' . $smtp_api_key, 'content-type: multipart/form-data']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $fields); $out = curl_exec($curl); $err = curl_error($curl); //log_write($out, $err); curl_close($curl); $res = json_decode($out, true)['result']; if (!$res) { $this->errors = json_decode($out, true)['errors']['message']; } return $res; } public function getErrorMessage() { return $this->errors; } } }
- В файле conf.php перед этой строкой:
require_once(ROOT . '/modules/index.php');
вставляем:
include(ROOT . '/smtp-bz.php');
должно получится примерно следующее:
@include(ROOT . '/smtp-bz.php'); require_once(ROOT . '/modules/index.php'); require_once(ROOT . '/settings.php');
- В файле smtp-bz.php ищем следующую строчку:
$smtp_api_key = 'your_api_key';
- Вписываем в кавычки вместо 'your_api_key' собственный API ключ.
Smtp подключен!