【问题标题】:Rails aws s3 read email with csv attachmentRails aws s3 读取带有 csv 附件的电子邮件
【发布时间】:2020-02-14 15:27:36
【问题描述】:

我正在设置一个应用程序,该应用程序将读取包含来自 aws s3 的 csv 附件的电子邮件。我试图弄清楚如何获取附加的 csv 文件并进行处理。我已经搜索过,找不到任何具体的工作。我不知道 csv 会被命名为什么。

我已经基本了解了正文的工作原理,但不知道如何获取附件。


obj = s3.get_object(bucket: 'mys3bucket', key: myobjectKey)
contents = obj.body.read
      from = contents.match(/(?<=From: )(.*?)(?=\n)/).try(:to_s)
      to = contents.match(/(?<=To: )(.*?)(?=\n)/).try(:to_s)
      subject = contents.match(/(?<=Subject: )(.*?)(?=\n)/).try(:to_s)

我不知道从这里去哪里...顺便说一句,我是 Rails 新手。

谢谢

【问题讨论】:

  • 您的电子邮件存储方式和位置是什么?您使用什么库来阅读电子邮件?既然你在这里,stackoverflow.com/help/minimal-reproducible-example 可能有助于发布更好的问题
  • 电子邮件存储在 amazon s3 上。我正在使用 aws-sdk 库来接收电子邮件。
  • 你使用什么格式?是.eml.json.txt还是其他格式?

标签: ruby-on-rails ruby amazon-s3 aws-sdk


【解决方案1】:

根据 AWS 文档,邮件应采用标准 .eml 格式。这意味着您可以使用像 Mail 这样的 gem 来提取您需要的一切:

mail = Mail.read_from_string(contents)
puts mail.to         
puts mail.from
puts mail.subject

提取附件;邮件文档中的示例:

# Attachments is an AttachmentsList object containing a
# number of Part objects
mail.attachments.each do |attachment|
  filename  = attachment.filename
  file_data = attachment.decoded
  # ...do something with file_data here...
end

在 README 中查看更多示例:
https://github.com/mikel/mail

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2019-11-21
    • 2019-05-28
    • 1970-01-01
    • 2017-09-28
    • 2012-06-12
    • 2019-12-07
    • 2023-03-25
    相关资源
    最近更新 更多