В этой статье я расскажу о том, как Amazon Simple Email Service (SES) является лучшим способом отправки электронной почты из вашего веб-приложения, и я предоставлю план для начала работы.
Вообще говоря, электронная почта в Интернете отправляется с использованием SMTP-серверов. Веб-приложения не являются исключением. Но, как известно любому, кто имел дело с крупномасштабной отправкой электронной почты через свое веб-приложение, использование SMTP для отправки электронной почты может быть настоящей болью.
Самый простой способ увидеть, как сервис SES Amazon улучшает традиционные методы отправки электронной почты, — это сравнить SES с SMTP:
Особенность | Традиционный SMTP | Amazon SES |
Доступность | Либо вы, либо ваш веб-хостинг должны поддерживать SMTP-сервер. Если сервер не работает, ваше приложение не может отправлять электронную почту. | В отличие от традиционного SMTP-сервера, который является единственной точкой отказа, Amazon SES распределен и разработан для обеспечения высокой доступности. |
Масштабируемость | Поскольку ваше веб-приложение отправляет все больше и больше электронной почты, вам необходимо обновить SMTP-сервер. В конечном итоге вам потребуется несколько серверов в конфигурации балансировки нагрузки или кластеризации. | Amazon SES может легко справиться с ростом объема вашей электронной почты по мере расширения вашего приложения. Не нужно вкладывать деньги в серверы, настройку или обслуживание. Вы просто платите за то, что вы используете. |
Стоимость | Конечно, вы можете попробовать создать собственную масштабируемую высокодоступную платформу SMTP. Все, что вам нужно, — это несколько серверов в нескольких центрах обработки данных и два или три штатных специалиста для мониторинга и обслуживания сервиса. Это в вашем бюджете, верно? | Вы можете использовать Amazon SES бесплатно — до 2000 сообщений в день (вы просто платите за трафик). Если вы отправляете больше, вы платите всего за копейки тысячи писем. |
исполнимости | Крупные почтовые провайдеры строго фильтруют входящую почту. Чтобы достичь высоких показателей доставки, вы должны быть в состоянии и готовы перепрыгивать через все виды технических достижений. | С SES Amazon предпринимает шаги для обеспечения доставки ваших сообщений. |
отслеживание | В журналах SMTP-сервера можно узнать, было ли получено письмо от принимающего интернет-провайдера (получайте удовольствие от работы с журналами сервера, чтобы отслеживать доставку) | Amazon SES обеспечивает легкий доступ к данным о доставке электронной почты. Мало того, что вы можете узнать, является ли ваша почта отскок, но с SES вы можете увидеть, сколько из ваших писем помечены как спам или нежелательной почты получателями в основных интернет-провайдеров. |
Теперь, когда вы знаете, насколько лучше может быть жизнь с использованием Amazon SES в вашем приложении, давайте рассмотрим несколько примеров. Мы будем опираться на знания из предыдущей статьи под названием « Начало работы с Amazon AWS PHP SDK ».
Прежде чем вы сможете работать с любым из следующих примеров, вы должны зарегистрироваться в сервисе Amazon SES. Для этого просто войдите в свою учетную запись AWS, посетите страницу продукта Amazon SES ( http://aws.amazon.com/ses/ ) и нажмите «Зарегистрироваться сейчас».
Ограничения песочницы и подтверждение по электронной почте
Первое, что вам нужно знать об использовании Amazon SES, это то, что когда вы впервые зарегистрируетесь в сервисе, ваша учетная запись будет ограничена в функциональности. Это означает две вещи:
- Вы можете отправлять только с адресов электронной почты, которые вы подтвердили.
- Вы можете отправлять только на адреса электронной почты, которые вы подтвердили.
Это, очевидно, не будет работать для производственного развертывания, но это просто для тестирования. Итак, первое, что вам нужно сделать, это проверить пару адресов электронной почты. Вы можете начать процесс проверки с помощью нескольких строк кода:
// You'll need the SDK Class for these examples.
// Learn more at: http://www.sitepoint.com/getting-started-with-the-aws-php-sdk/
require_once 'sdk.class.php';
// Create an instance of the SES class.
$email = new AmazonSES();
// Call the verification method using your own email address
$response = $email->verify_email_address('[email protected]');
print_r($response);
Простой запуск приведенного выше примера кода инициирует проверку. Вы получите электронное письмо на указанный вами адрес со ссылкой для подтверждения. Затем просто нажмите на ссылку, и ваш адрес электронной почты будет подтвержден.
Повторите этот процесс для любого количества адресов электронной почты, которые вы хотите отправить с или во время тестирования.
Отправка вашего первого письма
Теперь, когда у вас есть подтвержденный электронный адрес или два, вы можете начать отправлять электронную почту. Это очень просто:
require_once 'sdk.class.php';
$email = new AmazonSES();
// Your verfified sending email address.
$sendFrom = '[email protected]';
// The email address you're sending to
// (must be a verified email while your account
// is in the sandbox).
$sendTo = '[email protected]';
// The message and body of your email:
// (Adding .date('c') to the subject
// makes it easy to track separate tests)
$messageSubject = 'My First AWS Email: '.date('c');
$messageBody = 'Hi there! This is my first message.';
// Create the request:
$response = $email->send_email(
$sendFrom,
array('ToAddresses' => $sendTo),
array(
'Subject.Data' => $messageSubject,
'Body.Text.Data' => $messageBody
)
);
// If your send fails,
// You'll be able to find the reason why
// the response information.
print_r($response);
Это все, что нужно сделать!
Отправка электронной почты в формате HTML
Добавление HTML к вашей электронной почте облегчает добавление форматирования и ссылок, которые могут сделать вашу электронную почту более эффективной. PHP SDK позволяет легко:
require_once 'sdk.class.php';
$email = new AmazonSES();
$sendFrom = '[email protected]';
$sendTo = '[email protected]';
$messageSubject = 'My SES Email with HTML: '.date('c');
$messageBody = 'Hi there! This is a message with a link: http://www.sitepoint.com';
// You can specify an HTML alternative
// for your email which will allow you to
// add links, formatting, tables,
// and other html elements to your message:
$messageBodyHtml = 'Hi there! This is a message with a link: <a href="http://www.sitepoint.com" style="color: #D90000;">http://www.sitepoint.com</a>';
$response = $email->send_email(
$sendFrom,
array('ToAddresses' => $sendTo),
array(
'Subject.Data' => $messageSubject,
'Body.Text.Data' => $messageBody,
'Body.Html.Data' => $messageBodyHtml,
)
);
print_r($response);
Дополнительные параметры
В дополнение к обычной задаче отправки отформатированной электронной почты, SDK предоставляет некоторые дополнительные методы, которые могут быть очень полезны:
Send Raw Email — для более продвинутых функций PHP SDK позволяет отправлять необработанные сообщения электронной почты. Это позволяет вам добавить несколько частей к вашей электронной почте, включая вложения.
Список проверенных адресов электронной почты — может быть удобно получить список адресов электронной почты, которые вы ранее подтвердили, и в некоторых случаях вы можете даже использовать метод «Удаленный подтвержденный адрес электронной почты» для удаления писем, которые больше нельзя разрешать отправлять. с вашего аккаунта.
Получите квоту на отправку — в зависимости от ваших почтовых привычек ваша учетная запись Amazon AWS ограничит количество отправляемых писем в день. Это ограничение может варьироваться от 1000 писем до миллиона и более в день.
Получить статистику отправки — Этот мощный метод позволяет отслеживать статистику в режиме реального времени, включая успешные попытки доставки, отклоненные сообщения, отказов и жалоб.
Выход из песочницы
Когда вы будете готовы начать работу с новым почтовым сервисом, вам потребуется запросить производственный доступ для отправки электронной почты. Ссылку для выполнения этого запроса можно найти на странице продукта Amazon SES, и запросы обычно удовлетворяются в течение дня или около того.
Еще несколько советов
Злоупотребление — Amazon SES не предназначен для того, чтобы упростить отправку нежелательных писем в списки рассылки, которые вы покупаете. Если вы отправляете нежелательную электронную почту, используя SES, вы будете очень быстро закрыты.
Квота — Amazon SES динамически определяет дневные лимиты отправки. Лучший способ увеличить лимит — отправлять высококачественные электронные письма (низкий показатель отказов и жалобы). Ваш лимит начинается с 1000 писем, но он увеличится в течение нескольких дней, если вы будете постоянно отправлять до 1000 писем высокого качества в день.
Ограничения — сообщения не могут быть больше 10 МБ. Если вам нужно отправить файлы большего размера, я бы рекомендовал использовать сервис Amazon S3 с защищенными ссылками с ограниченным временем, а не прикреплять большие файлы. Письма также ограничены 50 получателями (в сумме: to, cc и bcc).
Настройка DNS. Чтобы максимизировать скорость доставки, Amazon рекомендует настроить специальные записи DNS, которые сообщают другим интернет-провайдерам, что ваш домен разрешает Amazon отправлять электронную почту от вашего имени. Чтобы узнать больше, прочитайте разделы «SPF, Sender ID и DKIM» в документации Amazon SES.
Просто лучше
Переключение моей транзакционной и другой системной электронной почты на Amazon SES значительно сократило время, усилия и деньги, которые я должен вкладывать в поддержание надежной службы электронной почты в моих веб-приложениях. И приятно знать, что по мере роста моих приложений мне не нужно беспокоиться о перерастании моей почтовой службы.
Есть вопросы или предложения? Оставьте комментарии ниже!