Электронная почта, размещенная на Amazon SES, с рабочей почтой aws на php-скрипт ec2

У меня есть веб-сайт, размещенный на amazon ec2, и у меня есть адрес электронной почты, размещенный на amazon SES, мы также используем рабочую почту amazon для доступа к электронным письмам и отправки электронных писем. Однако сейчас мы хотели бы направить всю электронную почту, отправленную на адрес электронной почты наших веб-сайтов, в скрипт php mysql (мы создаем систему управления коммуникациями).

Однако я не могу найти какие-либо предложения или документацию о том, как я смогу пересылать электронные письма, полученные в папку входящих сообщений aws workmail, во внешний размещенный файл php?

2 ответа

Решение

Второй ответ, потому что я не прочитал вопрос правильно (к сожалению, извините).

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

Однако SES ограничит размер сообщения (включая вложения) до 150 КБ при отправке в SNS.

Для поддержки больших сообщений (30 МБ) вы хотите сохранить их в S3. Чтобы получать событие SNS при поступлении нового сообщения, вам нужно настроить уведомление о событии S3 для s3:ObjectCreated:*,

Оттуда процесс тот же - вашему приложению нужно будет извлечь объект из S3 и извлечь сообщения и вложения из тела объекта, при желании удалив исходное сообщение из S3, когда вы закончите.

Единственная приличная библиотека PHP для извлечения вложений - это php-mime-mail-parser, и на их странице GitHub есть хороший пример.

Я адаптировал пример, чтобы показать соответствующие части:

$Parser = new PhpMimeMailParser\Parser();
$Parser->setText($raw_email);

foreach ($Parser->getAttachments(true) as $attachment) {
    echo 'Filename : '.$attachment->getFilename().'<br />'; // logo.jpg
    echo 'Filesize : '.filesize($attach_dir.$attachment->getFilename()).'<br />'; // 1000
    echo 'Filetype : '.$attachment->getContentType().'<br />'; // image/jpeg
    echo 'MIME part string : '.$attachment->getMimePartStr().'<br />'; // (the whole MIME part of the attachment)
}

Вы ищете сервис AWS Simple Email Service (SES). AWS добавил поддержку обработки входящей электронной почты в 2015 году.

Документация здесь

Для начала вам нужно настроить и подтвердить свой домен в SES и указать домены DNS MX запись в SES, как указано в консоли.

Оттуда вы можете создавать правила, основанные на адресе назначения, для отправки сообщений на: Lambda Function; S3; SNS; или рабочая почта.

Для вашего случая обработки в EC2 вы бы хотели опубликовать сообщения в теме SNS с подписанной очередью SQS. Тогда вашему серверу приложений на EC2 потребуется принимать сообщения от SQS в рабочем потоке.

Это можно использовать для обработки всех сообщений в домене, на котором у вас есть WorkMail, однако, если ваш конкретный продукт не требует этого - я бы рекомендовал настроить поддомен специально для адресов электронной почты, которые будут обрабатываться автоматически.

Другие вопросы по тегам