Отправка через SMTP
Передача писем на отправку по протоколу SMTP. Если ваша система уже умеет отправлять почту сама, это самый короткий путь к интеграции — менять в ней ничего не придётся, достаточно прописать наши реквизиты.
Когда подходит SMTP #
SMTP-подключение выигрывает там, где письма уже отправляются: CMS, CRM, готовый почтовый модуль фреймворка. Вы меняете хост, логин и пароль — и письма начинают идти через нас.
У способа есть предел. Всё, что выходит за рамки «отправить письмо», SMTP-протокол выразить не может: подстановка значений в шаблон, вложения из библиотеки, работа с адресными базами. За этим — в транзакционное API.
На бесплатном тарифном плане доступ отключён по умолчанию. Напишите в техподдержку, и его откроют для вашего аккаунта.
Логин и пароль #
Реквизиты доступны всем клиентам, которые настроили собственный домен отправки — то есть прописали DKIM и SPF. Смотреть их в личном кабинете: Аккаунт → Мои домены.
Там же, в разделе Интеграции → Email-транспорт → SMTP доступ, можно завести несколько пар логин-пароль — по одной на систему. Так проще отозвать доступ у чего-то одного, не трогая остальные интеграции.
Реквизиты подключения #
| Параметр | Значение | Описание |
|---|---|---|
host |
smtps.dashasender.ru |
Адрес сервера. |
port |
25, 2525 |
Обычное подключение с переходом на шифрование через STARTTLS. Порт 2525 берут, когда провайдер режет 25-й. |
port (SSL) |
465 |
Подключение, зашифрованное с первого байта. В настройках почтовых модулей ему обычно соответствует «SSL», а не «TLS». |
security |
Auto, TLS |
Для портов 25 и 2525. |
username |
строка | Из раздела Интеграции → Email-транспорт → SMTP доступ. |
password |
строка | Оттуда же. Показывается один раз при создании. |
Пример отправки #
Ниже — минимальное письмо с отключённым трекингом кликов. Логин, пароль и адрес отправителя подставьте свои.
curl --url 'smtp://smtps.dashasender.ru:2525' \
--user 'YOUR_LOGIN:YOUR_PASSWORD' \
--mail-from 'noreply@example.com' \
--mail-rcpt 'ivan@example.com' \
--upload-file - <<'EOF'
From: Магазин <noreply@example.com>
To: ivan@example.com
Subject: Заказ 128341 собран
Content-Type: text/html; charset=utf-8
DM-No-Track-Clicks: 1
<p>Ваш заказ ждёт в пункте выдачи.</p>
EOF
<?php
// composer require phpmailer/phpmailer
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtps.dashasender.ru';
$mail->Port = 2525;
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$mail->Username = 'YOUR_LOGIN';
$mail->Password = 'YOUR_PASSWORD';
$mail->CharSet = 'UTF-8';
$mail->setFrom('noreply@example.com', 'Магазин');
$mail->addAddress('ivan@example.com');
$mail->addCustomHeader('DM-No-Track-Clicks', '1');
$mail->isHTML(true);
$mail->Subject = 'Заказ 128341 собран';
$mail->Body = '<p>Ваш заказ ждёт в пункте выдачи.</p>';
$mail->send();
import smtplib
from email.message import EmailMessage
message = EmailMessage()
message['From'] = 'Магазин <noreply@example.com>'
message['To'] = 'ivan@example.com'
message['Subject'] = 'Заказ 128341 собран'
message['DM-No-Track-Clicks'] = '1'
message.set_content('<p>Ваш заказ ждёт в пункте выдачи.</p>', subtype='html')
with smtplib.SMTP('smtps.dashasender.ru', 2525) as smtp:
smtp.starttls()
smtp.login('YOUR_LOGIN', 'YOUR_PASSWORD')
smtp.send_message(message)
// npm i nodemailer
import nodemailer from 'nodemailer';
const transport = nodemailer.createTransport({
host: 'smtps.dashasender.ru',
port: 2525,
secure: false, // STARTTLS; для порта 465 — true
auth: { user: 'YOUR_LOGIN', pass: 'YOUR_PASSWORD' },
});
await transport.sendMail({
from: 'Магазин <noreply@example.com>',
to: 'ivan@example.com',
subject: 'Заказ 128341 собран',
html: '<p>Ваш заказ ждёт в пункте выдачи.</p>',
headers: { 'DM-No-Track-Clicks': '1' },
});
Служебные заголовки #
Всё, что SMTP-протокол сам по себе не умеет, задаётся заголовками письма. Значение у большинства из них не важно — важно само наличие заголовка.
| Заголовок | Значение | Что делает |
|---|---|---|
DM-Domain |
домен | Каким доменом подписывать письмо (DKIM и SPF). Без него берётся первый по списку в разделе Аккаунт → Мои домены. |
DM-Delivery-Timestamp |
timestamp | Отложенная отправка: письмо будет доставлено в указанное время, а не сразу. |
DM-Message-ID |
строка | Ваш собственный идентификатор письма. Придёт обратно в вебхуках — по нему удобно связывать события со своей базой. |
DM-Campaign-ID |
строка | Метка для группировки писем в статистике. Буквы и цифры. |
DM-No-Track-Opens |
любое | Не отслеживать открытия этого письма. |
DM-No-Track-Clicks |
любое | Не подменять ссылки на трекинговые. |
DM-Ignore-Delivery-Policy |
любое | Игнорировать «Единую политику коммуникаций», даже если она включена для email-транспорта. |
Остальные заголовки доезжают до получателя как есть. Исключение — Content-Type, MIME-Version, Message-ID и Date: их мы формируем сами.
Трекинг открытий и кликов #
По умолчанию включены оба: в письмо подставляется пиксель, а ссылки заменяются на трекинговые. Выключается это заголовками DM-No-Track-Opens и DM-No-Track-Clicks — по одному письму.
Если в вашей системе заголовки не добавить, тот же результат даёт переключатель в разделе Интеграции → Email-транспорт → SMTP доступ: он включает эти заголовки принудительно для всех писем, идущих через SMTP.
Несколько получателей #
В заголовке To можно перечислить несколько адресов через запятую. CC и BCC работают так же.
Обратный адрес #
Адрес в поле From должен быть подтверждён в разделе Доставляемость → Подтверждённые отправители. Правило то же, что и для транзакционного API: письмо с неподтверждённого адреса не уйдёт.
Вебхуки #
Отдельных вебхуков у SMTP нет — события о доставке, открытиях, кликах и возвратах приходят те же, что и у HTTP API, и настраиваются там же. Чтобы узнавать в них свои письма, отправляйте DM-Message-ID.
Вопросы #
Что-то не отправляется или ведёт себя не так, как здесь написано — пишите на support@dashamail.ru. Приложите DM-Message-ID или время отправки: так разбираться быстрее.