Рассылка, созданная в Single Sends, и письмо для сброса пароля, отправленное через /v3/mail/send, могут быть отправлены из одной учетной записи SendGrid, но при этом существенно различаться, что важно для теста на спам. Marketing Campaigns всегда пытается добавить заголовки для отписки, а API добавляет их только по вашему запросу, поэтому перед отправкой определите, какой из этих двух вариантов вы тестируете.
Получение писем в обоих случаях работает одинаково. Email Spam Tester предоставляет вам временный адрес, учетная запись не нужна. Учитывается только первое письмо, полученное в течение часа. Для него формируется отчет об аутентификации, результатах проверок SpamAssassin и Rspamd, содержимом, правилах Gmail и Yahoo для массовых отправителей и проверке IP отправителя по 21 блок-листу.
Single Sends: тестовая кнопка и префикс темы
Встроенный тест находится в разделе Marketing > Single Sends. Откройте Single Send, найдите Test Your Email, введите тестовый адрес и нажмите Send Test Message. Чтобы SendGrid разрешил тестирование, необходимо указать отправителя и тему. Если тема содержит Handlebars, нужно также заполнить Test Data. При отправке SendGrid добавляет Test - в начало темы.
Для полноценного теста отправьте Single Send списку. Single Sends отправляются спискам или сегментам, поэтому создайте список, в котором тестовый адрес будет единственным контактом, и выберите его в разделе Recipients. В этом случае заголовки, ссылка для отказа от подписки и отслеживаемые ссылки будут такими же, как в письме для подписчика. Если вы также запустили тест доставки во входящие, добавьте в этот список адреса почтовых ящиков провайдеров из теста.
API и SMTP: одна команда curl
Сокращенный пример из руководства SendGrid по началу работы, где в качестве получателя указан тестовый адрес:
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer <<YOUR_API_KEY>>' \
--header 'Content-Type: application/json' \
--data '{"personalizations":[{"to":[{"email":"test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com"}],"subject":"Hello, World!"}],"content":[{"type":"text/plain","value":"Heya!"}],"from":{"email":"you@yourdomain.com","name":"Your Name"}}'
Когда включен тест доставки во входящие, адреса ящиков у провайдеров добавляются в тот же массив to, а маркер добавляется в subject. Поэтому один запрос также показывает, в какую папку Gmail, Outlook, Yahoo и другие провайдеры поместили письмо.
Укажите свой тестовый адрес и адрес отправителя, подтвержденный SendGrid с помощью проверки одного отправителя или аутентификации домена. Еще лучше отправить сообщение, которое фактически отправляет ваше приложение, с его реальным HTML, поскольку при проверке содержимого оценивается текст письма.
Если ваше приложение работает через SMTP, меняется только транспорт. Хост: smtp.sendgrid.net, имя пользователя: буквально строка apikey (не ваш ключ), SSL работает на порту 465.
Также есть эндпоинт тестовой отправки POST /v3/marketing/test/send_email. Он принимает до 10 адресов, но работает только с динамическими транзакционными шаблонами. Поэтому для большинства писем, отправляемых через API, обычный вызов Mail Send выше дает достоверный результат.
Заголовки для отписки зависят от выбранного способа отправки
Marketing Campaigns всегда пытается добавить заголовки List-Unsubscribe. В письма, отправленные через API или SMTP, эти заголовки добавляются, только если параметр Subscription Tracking включен в разделе Settings > Tracking. В этом случае SendGrid добавляет List-Unsubscribe со ссылкой HTTPS и List-Unsubscribe-Post: List-Unsubscribe=One-Click.
Без Subscription Tracking вам нужно самостоятельно добавить заголовки в запрос:
"headers": {
"List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
"List-Unsubscribe": "<mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/unsubscribe>"
}
SendGrid требует указать части mailto и https и предупреждает, что нельзя отписывать получателя при обычном GET-запросе по этой ссылке. Будьте внимательны при копировании примеров из статьи поддержки SendGrid об этих заголовках. Во втором примере значение List-Unsubscribe-Post задано в виде URL, что неверно. Значение всегда должно быть List-Unsubscribe=One-Click. Остальная информация приведена на нашей странице исправления List-Unsubscribe.
Если сообщение предназначено для сброса пароля или содержит квитанцию и в нем нет заголовков списка рассылки, отчет помечает группу правил для массовых отправителей как пропущенную, а не как не пройденную. Для рассылки, отправленной через API, такого исключения нет.
Как читать результаты аутентификации
Если для учетной записи не настроена аутентификация домена, получатели видят "via sendgrid.net" после вашего адреса From. Согласно документации SendGrid, аутентификация домена убирает эту пометку. Но отчет показывает больше, чем просто пометку. Проверьте строки выравнивания DKIM и SPF. Если подпись или Return-Path относится к домену SendGrid, а не к вашему, DMARC не пройдет проверку для вашего адреса From, и в плане должна быть указана настройка аутентификации домена. Еще хуже отправлять письма с адреса gmail.com или yahoo.com. На странице SendGrid о DMARC указано, что для таких адресов не проходят проверки SPF и DKIM, а сама консоль предупреждает, что такие сообщения могут не пройти проверку DMARC.
Настройка аутентификации домена находится в разделе Settings > Sender Authentication. Если включена автоматическая защита, а это настройка по умолчанию, SendGrid предоставляет четыре записи:
- CNAME для
em[0000], которая отвечает за SPF и становится вашим Return-Path; - CNAME для
s1._domainkeyиs2._domainkeyдля DKIM; - TXT для
_dmarcсо значениемv=DMARC1; p=none;.
Пример значений. Скопируйте фактические значения из своей учетной записи.
| Имя | Тип | Значение | Назначение | Копировать |
|---|---|---|---|---|
| Автоматическая защита включена (по умолчанию) | ||||
| em[0000] | CNAME | Целевой адрес из вашей учетной записи | SPF и Return-Path. | |
| s1. | CNAME | Целевой адрес из вашей учетной записи | DKIM. | |
| s2. | CNAME | Целевой адрес из вашей учетной записи | DKIM, второй селектор. | |
| _dmarc | TXT | v= | DMARC. | |
| Автоматическая защита отключена | ||||
| em[0000] | MX | Хост из вашей учетной записи | Return-Path. | |
| em[0000] | TXT | v= | SPF, который вы обслуживаете самостоятельно. | |
| m1. | TXT | Ключ из вашей учетной записи | DKIM. | |
Если автоматическая защита отключена, вы получаете MX и TXT для SPF (v=spf1 include:sendgrid.net ~all) по адресу em[0000], а также TXT для DKIM по адресу m1._domainkey. Запись SPF вам нужно обслуживать самостоятельно. Если ваш DNS-провайдер отклоняет имена CNAME, содержащие _, это единственный вариант. Если другой сервис уже использует селектор s, SendGrid позволяет выбрать собственный. Проверьте результат с помощью инструмента проверки DKIM (селектор s1) и инструмента проверки SPF, который также подсчитывает DNS-запросы, если ваша запись SPF становится слишком большой.
Ссылки, IP-адреса и остальная часть отчета
Отслеживание переходов заменяет каждую ссылку. Если текст ссылки сам является URL, видимый адрес перестает совпадать с фактическим адресом назначения, и проверка несоответствия ссылок в отчете отметит это. На странице SendGrid о доставляемости указана та же проблема. Используйте слова в качестве текста ссылки или настройте брендирование ссылок, чтобы отслеживаемые ссылки проходили через ваш собственный домен, который должен совпадать с доменом в поле From.
На тарифах Trial и Essentials письма отправляются из общих пулов IP-адресов. SendGrid предупреждает, что используемый пул может измениться без уведомления при изменении вашей репутации, поэтому попадание одного из таких IP-адресов в блок-лист затрагивает всех пользователей этого пула. С помощью проверки блок-листов вы сможете позже снова проверить этот IP-адрес. Настроить обратную DNS-запись можно только для выделенного IP-адреса, который доступен в тарифах Pro Email API и Advanced Marketing Campaigns.
Дополнительные материалы в документации SendGrid
Тестирование электронной почтыwww.twilio.com ↗Аутентификация доменаwww.twilio.com ↗List-Unsubscribewww.twilio.com ↗Брендирование ссылокwww.twilio.com ↗Вопросы
Почему в моих письмах отображается "via sendgrid.net"?
SendGrid еще не аутентифицировал ваш домен отправки. Настройте аутентификацию домена в Settings > Sender Authentication. Согласно документации SendGrid, после этого метка исчезнет.
В отчете указано, что List-Unsubscribe отсутствует, хотя я использую SendGrid. Почему?
Вероятно, вы отправляете письма через API или SMTP с отключенным Subscription Tracking. Включите его в Settings > Tracking или самостоятельно добавьте оба заголовка в объект headers.
Можно ли использовать функцию SendGrid "Send Test Message" для этой проверки?
Да, письмо поступит на тестовый адрес. Учтите, что в начале темы будет добавлено Test - . Чтобы проверить заголовки в том виде, в котором их получают подписчики, лучше использовать Single Send для списка с одним контактом.
Можно ли использовать конечную точку API для тестовой отправки вместо Mail Send?
Только для Dynamic Transactional Templates, поскольку /v3/marketing/test/send_email принимает только их. Можно указать до 10 адресов. Все остальное отправляется через /v3/mail/send.
Какой селектор нужно указать в средстве проверки DKIM?
Если автоматическая защита включена, проверьте s1 и s2. Если она отключена, используется селектор m1. Если при настройке вы выбрали собственный селектор, используйте его.