gpt4 book ai didi

amazon-web-services - 读取保存到 SES 中 s3 存储桶的传入电子邮件

转载 作者:行者123 更新时间:2023-12-03 09:10:36 25 4
gpt4 key购买 nike

我已配置 AWS SES 来发送和接收电子邮件 我已验证我的域并创建规则集,所有传入电子邮件现在将存储在 S3 存储桶对象键前缀作为电子邮件。我发现以下用于从 S3 存储桶读取文件的代码: http://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingJava.html

我正在尝试阅读电子邮件。我的 SES 规则将所有传入电子邮件存储到我指定的 s3 存储桶中。我正在尝试添加读取存储桶、获取电子邮件的代码。下次当我读取该存储桶时,我如何才能了解之前读取了哪些电子邮件以及要读取哪些电子邮件。那么有什么方法可以让我读取带有电子邮件的存储桶,并将它们设置为已读,这样我就不必再次处理它们

最佳答案

S3只是存储。它没有“已读”与“未读”之分,如果您通过列出存储桶中的对象来发现消息,那么最好的解决方案将如下所示:

处理完每条消息后,将其移至其他地方。这可能是另一个存储桶,也可能是同一存储桶中的不同前缀。

S3 没有“移动”操作,但它有复制和删除...因此,对于您处理的每条消息,请修改对象键(路径+文件名)。

如果您的电子邮件使用前缀存储,例如“incoming/”,以便单个邮件的键看起来像“incoming/jozxyqkblahexample”,请将该字符串更改为“processed/jozxyqkblahexample”。然后告诉S3从旧的复制到新的。成功后,告诉 S3 删除原始文件。

这(大部分?解决了您的问题,因为由于您只列出带有前缀“incoming/”的对象,所以下次您将不会看到它们 - 它们现在已经不碍事了。

但是,此解决方案存在一个潜在问题...具体来说,您可能会与 S3 一致性模型发生冲突。 S3 不保证获取对象列表会立即为您提供反射(reflect)您最近完成的针对存储桶的所有事件的响应...对象可能会在存储桶中短暂停留一段时间。删除后的对象列表...因此删除后仍然可以在列表中看到一条消息。可能性相当低,但您需要意识到这种可能性。

当 SES 将消息放入您的存储桶时,还可以将其配置为通知您它刚刚执行了该操作。

通常,比轮询存储桶中的邮件更好的解决方案是将 SES 设置为 send you an SNS notification消息已收到。该通知将包含有关消息的信息,包括存储在存储桶中的 key 。然后,您从存储桶中准确获取该消息并对其进行处理,因此不需要存储桶对象列表。

请注意,SES 有两​​种不同的通知类型 - 对于小型电子邮件,SES 实际上可以将邮件包含在 SNS 通知中,但这不是上面提到的通知类型。上面,我建议您研究一下使用alert notification的可能性。 ,由 SES 通过 SNS 发送,告诉您每封电子邮件被放入 S3 时的情况。

关于amazon-web-services - 读取保存到 SES 中 s3 存储桶的传入电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com