我需要将Outlook EWS电子邮件及其附件转发到Rails服务器。
我随Viewpoint gem获得的附件以Viewpoint::EWS::Types::FileAttachment
对象的形式返回。
如何使用rest-client
库将这些附件传递到Rails服务器?
答案 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中。