Как передать вложения электронной почты EWS в конечную точку REST с помощью Viewpoint - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно переслать электронную почту Outlook EWS и ее вложения на сервер Rails.

Вложения, которые я получаю с гемом Viewpoint, возвращаются как Viewpoint::EWS::Types::FileAttachment объекты.

Как можноЯ передаю эти вложения на сервер Rails, используя библиотеку rest-client?

1 Ответ

0 голосов
/ 12 октября 2018

Мне удалось загрузить файлы, используя 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 с правильным именем файла.

...