Howto: Amazon SES PHP mailer

в 20:57, , рубрики: Amazon Web Services, AWS, SES, массовые рассылки, Сетевые технологии, метки: , ,

Здравствуйте!

Сегодня я расскажу как настроить массовую рассылку писем через Amazon SES с нуля.

Для начала нужно иметь аккаунт в Amazon Web Services и прикреплённый к нему метод оплаты сервиса. Если у Вас это есть, смело можем начинать!

Настройка SES

Итак, пройдём в консоль: https://console.aws.amazon.com. В списке сервисов ищем SES. Т.к. мы раньше не имели дела c SES, нас встречает удручающая надпись:
image

После всех регистраций и подтверждений, что Вы не спамер, Вы получите минимальные лимиты на отправку:

  • 10.000 писем в день
  • 5 писем в секунду

image

Далее, нам нужно указать и подтвердить адрес, который будет указан в письмах в поле From.
В меню Verified Senders ищем кнопочку Verify a new sender
image

Итак, осталось совсем чуть-чуть. Мы должны создать создать пользователя IAM, дать ему права отсылать почту и присвоить ему пару ключей. Идём сюда: https://console.aws.amazon.com/iam.

Создаём новую группу:
image

Называем её:
image

В шаблонах политики безопасности находим уже готовый шаблон Amazon SES Full Access:
image

После этого Далее, Далее, Далее и создали группу пользователей.

Следующий шаг — создать пользователя в меню Users:
image

Создаём пользователя и сразу генерируем для него пару ключей:
image

Пользователь создан:
image

Сохраним пару его ключей:

  • Access Key Id: AKIAJXEPJQETZTN7HRNQ
  • Secret Access Key: /T+wQ8xSOsm8BtkWcp6kdSSaDHRJT2imn/OoE660

Добавим пользователя в группу, которую создали до этого, тем самым дав права пользователю:
image

Итак, у нас есть пара ключей, которым даны права отправлять письма в 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

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js