0

我需要将 Outlook EWS 电子邮件及其附件转发到 Rails 服务器。

我使用 Viewpoint gem 获得的附件作为Viewpoint::EWS::Types::FileAttachment对象返回。

如何使用rest-client库将这些附件传递到 Rails 服务器?

4

1 回答 1

0

我设法通过使用 a 上传文件StringIO并给它一个:path

# email is a Viewpoint::EWS::Types::Message
# email_endpoint is a RestClient::Resource

attachments = email.attachments.map do |attachment|
  file = StringIO.new(Base64.decode64(attachment.content))
  file.class.class_eval { attr_accessor :original_filename, :content_type, :path }
  file.original_filename = attachment.file_name
  file.content_type = attachment.content_type
  file
end

response = email_endpoint.post(
  email: {
    subject: email.subject,
    attachments: attachments
  }
)

rest-client库将自动处理响应:path:read作为文件的对象,并使用多部分上传。

然后每个附件在 Rails 中显示为ActionDispatch::Http::UploadedFile具有正确文件名的 。

于 2018-10-12T15:55:07.867 回答