AWS SES Получение и анализ почты - PullRequest
0 голосов
/ 24 мая 2018

Проект решения высокого уровня AWS:

Почта в формате HTML -> AWS SES -> Правило входящей квитанции -> S3 и SNS -> Лямбда-функция.

Идея заключается в том, что Lambda будет приниматьУведомление SNS и зачистите деталь с деталями корзины S3 - возьмите файл с S3 и проанализируйте его с помощью модуля mail-parser.

У меня есть простой тестовый пример, который разбил часть этого с помощьюmail, которого никогда не было в S3 для проверки компонента синтаксического анализа почты.

Выделение одной конкретной части письма в качестве примера: -

Перед анализом просмотр источника в почтовом клиенте выглядит следующим образом: -

<tr class="dataElementContainer">
    <td class="dataLabelContainer">Description</td>
    <td class="dataValueContainer">Text</td>
</tr>

Когда изначальнозакодировано это будет читать почту из файла и анализировать ее.

Вывод будет в формате: -

\n\rDescription      Text\n\r

При запуске другого теста, но на этот раз отправка почты в SES и извлечениеполезная нагрузка от S3 после того, как она проанализирована, заканчивается в следующем формате: -

\n\rDescription \r\n\r\nText\n\r

Я мог бы проверить это, но я хотел бы понять, что происходит.

\ r \ nЭто возврат каретки Windows и перевод строки.

Упрощенный код, который получает объект S3

import boto3
import botocore
self.s3client = boto3.client('s3')
obj = self.s3client.get_object(Bucket=bucket_id,Key=key_id)

Упрощенный код, который анализирует почту: -

import mailparser
import regex

 mp = MailParser()
 parsed_mail = mp.parse_from_string(obj)
 plain_text_body = parsed_mail.text_plain[0]

Это похоже напроблема с юникодом / расшифровкой, но я не могу выяснить, где это может быть. Я какое-то время ломал голову над этим вопросом, и я не могу понять, в чем проблема!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...