高级AWS解决方案设计:
HTML格式邮件->;AWS SES->;入站收据规则->;S3和SNS->;Lambda函数。在
其想法是Lambda将接收SNS通知并去掉包含S3 bucket详细信息的部分——从S3获取文件并使用邮件解析器模块解析它。在
我有一个简单的测试用例,它使用S3中从未出现过的邮件来测试邮件解析组件。在
突出显示电子邮件的一个特定部分作为案例要点:在
在解析之前,查看电子邮件客户端中的源代码这:在
DescriptionText最初编码时,它将从文件中读取邮件并进行解析。在
输出将在格式:-在
^{pr2}$
当运行另一个测试时,但是这一次向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/解码问题,但我找不到它可能在哪里
我已经为这件事费解了一段时间,但我不能完全把我的手指放在这个问题上!在