...

Отправка сообщений по SMTP: как подключить почтовый сервис к сайту, приложению и умному дому

Ноутбук и датчики умного дома Xiaomi, письмо уходит на почтовый сервер по SMTP

Письмо о регистрации, код для сброса пароля или сообщение «в квартире сработал датчик протечки» шлёт программа, и чаще всего делает это по стандартному почтовому протоколу. Настроить отправку сообщений smtp можно за несколько минут, если под рукой данные почтового сервиса. Ниже разберём, какие это данные, как вписать их в CMS, фреймворк и Home Assistant, где живут датчики Xiaomi, и сколько стоит такой сервис.

Ноутбук и датчики умного дома Xiaomi, письмо уходит на почтовый сервер по SMTP

Что такое отправка сообщений через SMTP

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

Этим способом обычно отправляют транзакционные письма. Это сообщения, которые система пишет сама в ответ на событие: приветствие после регистрации, сброс пароля, счёт, оповещение умного дома. Массовая рекламная рассылка — отдельная задача со своими инструментами, и в этой статье её не касаемся.

Какие данные нужны для подключения

Схема: датчик Xiaomi, Home Assistant, SMTP-сервер Haskimail на порту 587, почтовый ящик

Для подключения нужны адрес сервера, порт, способ шифрования и учётные данные. У сервиса Haskimail (haskimail.ru) они одинаковы для любого приложения, меняется только место, куда их вписать.

Параметр Значение у Haskimail
Сервер (хост) smtp.haskimail.ru
Порт 587
Шифрование TLS
Аутентификация включена
Имя пользователя API-токен сервера Haskimail
Пароль тот же API-токен сервера

Логин и пароль здесь — один и тот же API-токен сервера. Его находят в настройках своего сервера Haskimail на вкладке «API-токены», открыть её могут владельцы и администраторы аккаунта. Слово «TLS» на порту 587 у Haskimail означает шифрование через STARTTLS: в примере сервиса для Rails на этом порту стоит enable_starttls_auto, поэтому, если в настройках есть отдельные варианты STARTTLS и TLS/SSL, выбирайте STARTTLS.

Как настроить отправку в CMS и фреймворке

Датчик открытия двери и датчик протечки Xiaomi в квартире, рядом смартфон

Во многих CMS почта через внешний сервер включается в настройках, код писать не нужно. Haskimail описывает порядок так:

  1. Войдите в панель администратора CMS и откройте «Настройки», затем «Email».
  2. В поле «Тип транспорта» выберите SMTP.
  3. В поле «Имя хоста» укажите smtp.haskimail.ru.
  4. В поле «Порт» укажите 587.
  5. Поставьте флажок «Использовать аутентификацию».
  6. В поля «Имя пользователя» и «Пароль» вставьте API-токен сервера Haskimail.
  7. В поле «Метод шифрования» выберите TLS, а если среди вариантов есть отдельный STARTTLS, — его.
  8. Проверьте и сохраните изменения.

Названия полей в разных CMS отличаются, но смысл у них один и тот же. Во фреймворках те же значения вписываются в конфигурационный файл. Для Django это пять строк в settings.py:

EMAIL_HOST = 'smtp.haskimail.ru'
EMAIL_HOST_USER = 'YOUR_HASKIMAIL_SERVER_API_TOKEN'
EMAIL_HOST_PASSWORD = 'YOUR_HASKIMAIL_SERVER_API_TOKEN'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

Готовые примеры для Laravel, Rails, Express и Django лежат на странице сервиса Haskimail. Кроме такого подключения у сервиса есть HTTP API и библиотеки для разных языков программирования, если приложению удобнее слать письма запросом.

Письма от умного дома Xiaomi через Home Assistant

Home Assistant умеет присылать на почту оповещения о событиях устройств Xiaomi, например датчиков, если эти устройства к нему подключены. Подключаются они через официально поддерживаемую Xiaomi интеграцию для Home Assistant (Xiaomi Home Integration), а письмо по событию Home Assistant отправляет своей интеграцией SMTP.

Эта интеграция добавляется так, как описано в документации Home Assistant:

  1. Откройте «Настройки» → «Устройства и службы».
  2. Нажмите «Добавить интеграцию» в правом нижнем углу и выберите SMTP.
  3. Заполните поля мастера: адрес и имя отправителя, хост smtp.haskimail.ru, порт 587, защиту соединения — starttls (почему именно он, объяснено у таблицы параметров), имя пользователя и пароль (API-токен сервера Haskimail). Переключатель проверки SSL-сертификата держите включённым.
  4. Добавьте первого получателя. Остальных можно добавить позже в настройках интеграции.

В поле защиты соединения Home Assistant предлагает три варианта: starttls, tls и none. В документации Home Assistant порт 587 указан вместе со starttls, и это сходится с объяснением у таблицы параметров выше. После настройки уведомление через эту интеграцию можно использовать в автоматизациях и скриптах: например, отправлять письмо, когда датчик протечки или открытия двери меняет состояние.

Сколько стоит сервис

Для проверки настройки хватит бесплатного тарифа Haskimail для разработчиков: 100 тестовых писем в месяц, без срока действия и без банковской карты. Платные тарифы начинаются с 1 000 ₽ в месяц за 10 000 писем.

Писем в месяц Цена в месяц Сверх лимита, за 1000 писем
10 000 1 000 ₽ 50 ₽
50 000 2 500 ₽ 40 ₽
125 000 5 000 ₽ 30 ₽
300 000 8 000 ₽ 25 ₽

Остаток писем на следующий месяц не переносится. Письма сверх лимита считаются в конце периода и добавляются к следующему счёту. Полная сетка, включая тарифы до 1,5 млн писем, есть на странице тарифов; платить можно картами, которые работают в России.

Как следить за доставкой писем

Найти нужное письмо помогают метаданные и теги, которые добавляются заголовками при отправке по SMTP. Заголовок X-HM-Metadata-invoice-id: 123 привяжет письмо к счёту, а X-HM-Tag: welcome-email соберёт все приветственные письма в одну группу.

Метаданные потом видны в веб-приложении Haskimail, через API и в вебхуках, которые присылают события с письмами в виде JSON на указанный адрес. История хранит письма за 45 дней с полным содержимым, так что разбирать проблему с доставкой можно по самому письму.

Поделиться информацией
Андрей Куренков
Оцените автора
( Пока оценок нет )
MiGadget.ru
Добавить комментарий