Интеграция email-рассылки (Amazon SES) с сайтом
Amazon SES (Simple Email Service) — один из самых дешёвых вариантов для отправки больших объёмов email. Стоимость: $0.10 за 1000 писем при отправке через EC2, $0.10 за 1000 при внешней отправке. Требует больше начальной настройки, чем готовые ESP.
Верификация домена
Перед отправкой нужно верифицировать домен через DNS-записи (DKIM, DMARC). В AWS Console: SES → Verified identities → Create identity → Domain. AWS генерирует CNAME-записи для добавления в DNS.
Вывод из Sandbox
По умолчанию SES работает в sandbox-режиме: можно отправлять только на верифицированные email. Для продакшна нужно запросить вывод из sandbox через AWS Console (обычно одобряется за 24–48 часов).
Отправка через AWS SDK
// composer require aws/aws-sdk-php
$ses = new \Aws\Ses\SesClient([
'region' => 'eu-west-1',
'credentials' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY')
]
]);
$ses->sendEmail([
'Source' => '[email protected]',
'Destination' => ['ToAddresses' => [$to]],
'Message' => [
'Subject' => ['Data' => "Заказ #{$orderId} подтверждён", 'Charset' => 'UTF-8'],
'Body' => [
'Html' => ['Data' => $htmlBody, 'Charset' => 'UTF-8'],
'Text' => ['Data' => $textBody, 'Charset' => 'UTF-8']
]
],
'ConfigurationSetName' => 'production-tracking' // для трекинга событий
]);
Laravel SES Driver
MAIL_MAILER=ses
AWS_DEFAULT_REGION=eu-west-1
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
// config/services.php
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'options' => [
'ConfigurationSetName' => 'production-tracking',
'Tags' => [['Name' => 'Environment', 'Value' => 'production']]
],
],
Configuration Sets и SNS уведомления
Configuration Sets позволяют получать события доставки через Amazon SNS (Simple Notification Service) → Lambda или HTTP endpoint:
-
send,delivery,bounce,complaint,open,click - Bounce и Complaint критически важны: нужно немедленно отписывать жалующихся
SES Suppression List
AWS автоматически блокирует повторную отправку на адреса с hard bounce или жалобами. Перед отправкой следует проверять адрес через API, чтобы не тратить квоту.
Срок интеграции: 1 рабочий день (+ 24–48 часов на верификацию домена и вывод из sandbox).







