如何使用Viewpoint将EWS电子邮件附件中继到REST端点

时间:2018-10-12 15:55:08

标签: ruby-on-rails ruby exchangewebservices rest-client viewpoint

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

我随Viewpoint gem获得的附件以Viewpoint::EWS::Types::FileAttachment对象的形式返回。

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

1 个答案:

答案 0 :(得分:0)

我设法通过使用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作为文件并使用分段上传的对象。

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