在rails中,我想使用Action Mailer發送電子郵件,附件是從窗體文件字段獲得的,並且希望通過sidekiq將其延遲。從窗體文件字段郵件附件並通過sidekiq發送郵件
我寫了下面的代碼。
鑑於:
<%= form_tag({ controller: 'my_controller', action: 'my_mail', method: 'post' }, { multipart: true }) do %>
<%= form_field_tag(:attachment) %>
<% end %>
在控制器:
def my_mail
MyMailer.delay.my_mail(params)
end
在梅勒:
def my_mail(message)
attachments['attachment'] = File.read(message[:attachment].tempfile)
mail(from: ENV['MY_MAIL'], to: ENV['MAIL_RECIVER'], subject: 'this is subject')
end
但是,IO錯誤會因無法進入到該文件提出。
而且,我執行文件的讀取控制器操作
def my_mail
MyMailer.delay.my_mail(File.read(params[:attachment].tempfile))
end
現在,我可以使附着在梅勒作爲
attachments['attachment'] = message
而現在,它的工作,因爲我想要的,但它是非常糟糕由於安全原因讀取控制器中的文件。
所以,現在我想知道附加從窗體獲得的文件並通過sidekiq發送它的最佳方式。
是的,它與任何安全問題工作正常。謝謝@Cba –
當您嘗試在Rails和Sidekiq之間傳遞臨時文件時,特定於主機的隊列變得非常有用:http://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues / –