Здравствуйте!
Сегодня я расскажу как настроить массовую рассылку писем через Amazon SES с нуля.
Для начала нужно иметь аккаунт в Amazon Web Services и прикреплённый к нему метод оплаты сервиса. Если у Вас это есть, смело можем начинать!
Настройка SES
Итак, пройдём в консоль: https://console.aws.amazon.com. В списке сервисов ищем SES. Т.к. мы раньше не имели дела c SES, нас встречает удручающая надпись:
После всех регистраций и подтверждений, что Вы не спамер, Вы получите минимальные лимиты на отправку:
- 10.000 писем в день
- 5 писем в секунду
Далее, нам нужно указать и подтвердить адрес, который будет указан в письмах в поле From.
В меню Verified Senders ищем кнопочку Verify a new sender
Итак, осталось совсем чуть-чуть. Мы должны создать создать пользователя IAM, дать ему права отсылать почту и присвоить ему пару ключей. Идём сюда: https://console.aws.amazon.com/iam.
Создаём новую группу:
Называем её:
В шаблонах политики безопасности находим уже готовый шаблон Amazon SES Full Access:
После этого Далее, Далее, Далее и создали группу пользователей.
Следующий шаг — создать пользователя в меню Users:
Создаём пользователя и сразу генерируем для него пару ключей:
Пользователь создан:
Сохраним пару его ключей:
- Access Key Id: AKIAJXEPJQETZTN7HRNQ
- Secret Access Key: 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
Добавим пользователя в группу, которую создали до этого, тем самым дав права пользователю:
Итак, у нас есть пара ключей, которым даны права отправлять письма в SES.
SPF запись для домена
Для того, чтоб валидировать Amazon SES как рассыльщика почты, к вашему домену добавьте SPF запись:
v=spf1 include:amazonses.com ?all
PHP рассыльщик
Далее копируем себе файлы из репозитория github.com/korjik/PHP-SES-mailer
ses.php — класс для соединения с SES — www.orderingdisorder.com/aws/ses/
users.csv — пример списка пользователей в формате
«username»,«username@email.com»
send_email.php — сама программа рассылки почты.
В send_email.php нужно заменить следующие параметры:
Пару ключей:
$ses = new SimpleEmailService('Access Key Id', 'Secret Access Key');
Валидированый адрес From:
$m->setFrom('validated@email.com');
Далее заполняем 2 текстовых поля — переменные $text_email и $html_email именами отвечают сами за себя.
Если подготовления сделаны, скрипт можно запустить с параметром пути к файлу users.csv:
$ php send_email.php users.csv
Итог
Все пользователи, указанные в users.csv получат имейлы.
Советы
Не используйте валидированный From адрес из чужих доменов. Отсутвие SPF записи повышает шанс писем попасть в спам.
Тюнинг
Как вы заметили, мы можем в каждое письмо вставлять имя пользователя, считанное как $username=$user_fields[0] из CSV файла. Тем самым, вы сами можете менять формат CSV, добавлять кастомные поля и т.д.
Если есть вопросы, пишите, отвечу.
ЗЫ. Статья написана специально для господина m31.
Автор: korjik