Статьи

Начало работы с Amazon Simple Email Service (SES)

В этом уроке я расскажу о простой почтовой службе Amazon (SES) и расскажу о нескольких способах ее использования. SES — это служба исходящей электронной почты, что означает, что она позволит вам отправлять электронную почту через нее.

Зачем вам нужен почтовый сервис? Ну, со многими хостинг-провайдерами, отправка большого количества электронных писем (возможно, у вас много клиентов, пользующихся вашим интернет-магазином) может быть проблемой, так как хосты, как правило, имеют ограничения. Стандартной альтернативой является использование Gmail для отправки электронных писем, однако это также имеет ограничения. Это то, где SES входит, поскольку это разработано для этой точной цели. SES делает отправку электронной почты более надежной, и, используя магию, она также помогает вашей электронной почте избегать спам-папок.

Когда вы регистрируетесь в Amazon , вы можете использовать их бесплатный уровень в течение двенадцати месяцев. Бесплатный уровень предоставит вам доступ ко всем сервисам Amazon, но с справедливыми ограничениями. Например, SES ограничен до 2000 сообщений в день, если вы выбираете их хостинг EC2.

В противном случае стоимость составляет $ 0,10 за тысячу сообщений. Они рассматривают одно сообщение как одно сообщение для одного получателя. Так что если вы отправите одно письмо на 1000 адресов электронной почты, это будет стоить вам 10 долларов центов.

Прикрепление файлов стоит $ 0,12 за ГБ.

В настоящее время есть два способа использования SES:

  • Простой протокол пересылки почты (обычно известный как SMTP)
  • API SDK

Они работают по-разному; SMTP позволяет напрямую связываться с сервером электронной почты, а метод API позволяет отправлять электронную почту через сервис AWS SES. В этом руководстве мы рассмотрим использование SMTP-сервера с помощью плагина WordPress, а затем (для более смелых пользователей) рассмотрим использование SDK API.

Прежде чем мы что-то сделаем, нам понадобится аккаунт в SES. Это покажет вам, как подготовить учетную запись и отправлять электронные письма с помощью консоли.

Прежде чем вы сможете использовать SES, вам необходимо зарегистрировать учетную запись Amazon Web Services — необходима кредитная карта, даже для бесплатного плана. Чтобы зарегистрироваться, вам нужно перейти на http://aws.amazon.com/ses , следовать инструкциям на экране и выполнить несколько шагов подтверждения личности.

После регистрации вы получите доступ ко всем сервисам Amazon.

Независимо от того, используете ли вы услугу в «песочнице» или на производстве, вам нужно будет подтвердить свой адрес «От». Вы можете найти больше информации о проверке адресов электронной почты в справочной документации .

Получив электронное письмо, вы можете запросить доступ к продукту. Это позволит вам отправлять электронные письма на неподтвержденные адреса электронной почты. Количество писем, которые вы можете отправить за день, будет увеличено.

Примечание: разумно играть в режиме песочницы, прежде чем отправлять реальные электронные письма.

Хотя у Amazon в настоящее время нет официального плагина, существуют сторонние пакеты, которые могут выполнить эту работу. В этом примере мы будем использовать плагин под названием Amazon SES DKIM Mailer . Это замечательный плагин, совместимый с различными почтовыми сервисами, включая Amazon SES. Это означает, что если вы решили не придерживаться SES, вам не нужно менять свой сайт, только данные подключения.

Этот плагин также поставляется с поддержкой DomainKeys Identified Mail ( DKIM ). DKIM о репутации; подписав свои письма этим, вы можете предотвратить отправку писем прямо в папку нежелательной почты.

Взято из документации по плагину на WordPress :

  1. Отключите все существующие плагины почтовой программы, чтобы избежать конфликтов.
  2. Разархивируйте zip-файл плагина в каталоге / wp-content / plugins / (или установите через встроенный установщик плагина WordPress).
  3. Активируйте плагин через меню администратора плагинов в WordPress.
  4. Нажмите ссылку « Настройки» плагина рядом с его ссылкой « Деактивировать» (все еще на странице плагинов) или нажмите ссылку « Настройки»> «Настройки почты» , чтобы перейти на страницу настроек администратора плагина. Настройте параметры для вашей ситуации.

Как мы уже говорили ранее, чтобы использовать Amazon SES в реальной среде, вам необходимо подать заявку на доступ к продукту. Без этого вы не сможете отправлять электронные письма на адреса, которые вы не контролируете.

Чтобы воспользоваться DKIM, вам необходимо сгенерировать открытый и закрытый ключ и загрузить свой закрытый ключ на свой сервер (мы рекомендуем назвать его «.htkeyprivate» и поместить его в корень сайта, а также установить разрешения на 400 или 440).

Для пользователей Windows существует множество онлайн-генераторов ключей, которые могут помочь в этом. На сервере Linux или Mac вы можете сгенерировать свои собственные ключи DKIM с паролем «change-me», используя следующую команду терминала:

1
openssl genrsa -des3 -passout pass:change-me -out .htkeyprivate 1024 && openssl rsa -in .htkeyprivate -passin pass:change-me -pubout -out .htkeypublic

Для DKIM установите запись DNS TXT примерно так:

1
HOST: your-selector._domainkey.example.com.

Используйте встроенные тесты, чтобы убедиться, что ваш блог может правильно отправлять (подписанные DKIM) электронные письма.

Чтобы убедиться, что плагин настроен для работы с AWS SES, необходимо настроить несколько параметров (см. Скриншот выше).

  • Отметьте Отправить по электронной почте через Amazon SES?
  • Добавьте свой ключ доступа AWS
  • Добавьте свой секретный ключ AWS
  • Убедитесь, что адрес «От» является тем, который вы подтвердили ранее.

Теперь вы можете использовать плагин « Отправить тестовое сообщение» . После того, как вы успешно получили письмо, вы полностью готовы его использовать.

Для более продвинутых пользователей в этом разделе я покажу вам, как отправить электронное письмо с помощью SDK. Это будет использовать PHP, однако есть и SDK для других языков.

Сначала вам нужно будет установить SDK. Для PHP есть несколько способов сделать это; Композитор, Phar, Zip и PEAR. Для этого урока мы будем использовать Composer , который вам нужно будет сначала установить. Установив Composer, вы сможете получить к нему доступ через интерфейс командной строки (CLI).

Создайте файл в корневом каталоге вашего проекта с именем «composer.json», в который вы положите свою конфигурацию. Затем добавьте:

1
2
3
4
5
{
   «require»: {
       «aws/aws-sdk-php»: «2.*»
   }
}

Если вы использовали «composer.phar», вы можете php composer.phar install или php composer.phar install Windows composer install . В свой проект вы можете добавить require '/path/to/sdk/vendor/autoload.php';

Теперь, когда вы это сделали, у вас есть доступ ко всем API-интерфейсам продуктов, которые предоставляет AWS. Это означает, что теперь вы можете отправлять электронные письма. Так что тебе нужно?

Вот пример:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use Aws\Ses\SesClient;
 
require ‘vendor/autoload.php’;
 
$client = SesClient::factory(array(
    ‘key’ => ‘AWS_KEY’,
    ‘secret’ => ‘AWS_SECRET_KEY’,
    ‘region’ => ‘us-east-1’
));
 
$emailSentId = $client->sendEmail(array(
    // Source is required
    ‘Source’ => ‘from@email.com’,
    // Destination is required
    ‘Destination’ => array(
        ‘ToAddresses’ => array(‘to@email.com’)
    ),
    // Message is required
    ‘Message’ => array(
        // Subject is required
        ‘Subject’ => array(
            // Data is required
            ‘Data’ => ‘SES Testing’,
            ‘Charset’ => ‘UTF-8’,
        ),
        // Body is required
        ‘Body’ => array(
            ‘Text’ => array(
                // Data is required
                ‘Data’ => ‘My plain text email’,
                ‘Charset’ => ‘UTF-8’,
            ),
            ‘Html’ => array(
                // Data is required
                ‘Data’ => ‘<b>My HTML Email</b>’,
                ‘Charset’ => ‘UTF-8’,
            ),
        ),
    ),
    ‘ReplyToAddresses’ => array( ‘replyTo@email.com’ ),
    ‘ReturnPath’ => ‘bounce@email.com’
));

Давайте пробежимся через это. Сначала мы добавили использование пространства имен, чтобы код выглядел чище. Затем мы добавили файл композитора autoload.php.

Чтобы иметь возможность отправлять файл, мы должны сделать клиента. Это делается с помощью SES Client Factory. Это может занять много разных настроек, но минимум, который нам нужен, это ключ, секрет и регион. Вы можете найти ключ и секрет в консоли управления IAM. Регион — это регион, который вы использовали для SES.

Теперь у вас есть клиент, настроенный и готовый к работе. Теперь вы можете использовать клиент для вызова sendEmail . Есть и другие методы, которые вы можете вызвать, и вы можете найти больше информации о них в справочной документации .

Метод sendEmail принимает один параметр, который является массивом. Этот массив требует определенных данных в нем; например, источник является обязательным и должен быть адресом, который вы подтвердили в своей учетной записи, чтобы разрешить отправку электронных писем.

После того, как вы добавили электронные письма, которые хотите использовать, и добавили содержимое своего электронного письма, вы можете запустить скрипт, и вы отправите свое первое электронное письмо!

Какой бы путь внедрения вы ни выбрали, я надеюсь, что это руководство вызвало у вас интерес и побудило вас взглянуть на Amazon SES! Если вы столкнетесь с какими-либо проблемами при использовании SES, не стесняйтесь спрашивать совета в комментариях.