settings:smtp

Настройка SMTP

Что такое SMTP?

SMTP — это протокол передачи почты (англ. Simple Mail Transfer Protocol). SMTP-сервер используется, когда надо отправить письмо с одной почты на другую.

Если вы изредка отправляете письма друзьям и коллегам через обычные почтовые интерфейсы Google, Mail.ru или Яндекс.Почта, то настройки SMTP не понадобятся: всё уже настроено и готово к использованию.

А если собираетесь заниматься почтовыми рассылками для клиентов, то пригодятся знания: как правильно настроить и использовать SMPT.


Подключение SMTP

  1. Регистрируемся на сайте smtp.bz
  2. В личном кабинете переходим в раздел домены отправителя
  3. Нажимаем добавить новый домен и вводим домен, к которому нужно подключить smtp
  4. Далее добавляем следующие записи в панели управления доменом:
    1. DKIM запись smtpbz._domainkey, тип TXT, значение:
        v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvl8mj5p2hF+O23TmESAuwes/R5NJ6ryQ5KmrqdrZksS1BDrV+C7Xu1XuQMfm+QGarA6NU05DgDnpTAwLAUPAjYqPv7JqPxx8eY5vo2kJVUDmb+QnkNDIrXTSAVCrugG9OqQlUu+YId7YrEEIVSiFH6oJXME95hKdR5rJy3B3/uQIDAQAB
    2. SPF запись ваш домен (прим. domain.com), тип TXT, значение:
        v=spf1 a mx include:spf.smtp.bz ~all
    3. CNAME запись "stats", тип CNAME, значение:
        smtp.bz.
  5. После добавления вышеперечисленных записей, на сайте smtp.bz проходим верификацию записей, добавление записей на хостинге может занять до 72 часов.
  6. После прохождения верификации, необходимо сгенерировать ключ API. Для этого переходим в профиль аккаунта и ищем раздел сгенерировать Api ключ. Генерируем, сохраняем.
  7. Загружаем в корень сайта этот файл:
    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;
                }
            }
        }
  8. В файле 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');
  9. В файле smtp-bz.php ищем следующую строчку:
      $smtp_api_key = 'your_api_key';
  10. Вписываем в кавычки вместо 'your_api_key' собственный API ключ.

Smtp подключен!

  • settings/smtp.txt
  • Последнее изменение: 2022/05/25 11:38
  • vlad