AWS SES邮件接收和解析

问题描述 投票:1回答:1

高级AWS解决方案设计:

HTML格式的邮件-> AWS SES->入站接收规则-> S3和SNS-> Lambda函数。

[Lambda会采用SNS通知并删除带有S3存储桶详细信息的零件的想法-从S3中获取文件并使用邮件解析器模块对其进行解析。

我有一个简单的测试用例,它使用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]

这感觉像是unicode /解码问题,但我找不到它可能在哪里一直对此感到困惑,我不能完全解决这个问题!

python amazon-web-services amazon-s3 amazon-ses
1个回答
0
投票

我遇到同样的问题。实际上,我将其追溯到我的Web客户端,该客户端剥离了\ r \ n。

© www.soinside.com 2019 - 2024. All rights reserved.