作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我意识到这是一个完全菜鸟的问题,希望有一个简单的解决方案。但是,我被卡住了并向您寻求帮助!我想要做的是:我有一个 SES 规则集,用于将电子邮件存储在我的 S3 存储桶中。我存储的特定电子邮件包含一个 .txt 附件。我希望有一个在 S3 存储桶“创建”函数上触发的 Lambda 函数,打开电子邮件和附件,然后根据电子邮件附件中的特定文本执行一些其他处理。
我的具体问题是:如何让 Lambda 函数获取 S3 电子邮件“对象”并将其转换为标准的 Python“消息”对象格式,以便我可以使用 Python 的电子邮件图书馆反对吗?
这是我目前所拥有的......我知道不多:
import boto3
import email
def lambda_handler(event, context):
s3 = boto3.client("s3")
if event:
print("My Event is : ", event)
file_obj = event["Records"][0]
filename = str(file_obj["s3"]['object']['key'])
print("filename: ", filename)
fileObj = s3.get_object(Bucket = "mytestbucket", Key=filename)
print("file has been gotten!")
#Now that the .eml file that was stored in S3 is stored in fileObj,
#start parsing it--but how to convert it to "email" class???
#??????
最佳答案
你能试试这样的东西吗?有了这个,你会得到 msg从您使用 S3 文件打开的流返回对象。
import boto3
import email
def lambda_handler(event, context):
s3 = boto3.client("s3")
if event:
print("My Event is : ", event)
file_obj = event["Records"][0]
filename = str(file_obj["s3"]['object']['key'])
print("filename: ", filename)
fileObj = s3.get_object(Bucket = "mytestbucket", Key=filename)
print("file has been gotten!")
msg = email.message_from_bytes(fileObj['Body'].read())
print(msg['Subject'])
#Hello
关于python - 如何让 Python AWS Lambda 打开作为电子邮件对象存储在 S3 中的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54029770/
我是一名优秀的程序员,十分优秀!