如何将文档附加到电子邮件 ActiveStorage 和 Cloudinary?

Posted

技术标签:

【中文标题】如何将文档附加到电子邮件 ActiveStorage 和 Cloudinary?【英文标题】:How to attach docs to email ActiveStorage and Cloudinary? 【发布时间】:2020-09-25 23:04:01 【问题描述】:

我正在将 ActiveStorage 与 Cloudinary 一起使用:

gem 'cloudinary', '~> 1.14.0'
gem 'activestorage-cloudinary-service', '~> 0.2.3'

我的邮件中有以下内容:

if @job_request.work_files.attached?
  @job_request.work_files.each do |file|
    attachments[file.blob[:filename]] =  mime_type: file.blob.content_type, content: file.download 
  end
end

这会在 Heroku 上引发错误:

SendGridActionMailer::DeliveryMethod::SendgridDeliveryError

Sendgrid delivery failed with 400 The attachment content is required.

用户可以提交带有文件的工作请求(使用 ActiveStorage 和 Cloudinary,Cloudinary 允许提交图像、文档、pdf 和电子表格)。 我需要将这些文件附加到电子邮件中并发送,有什么办法可以解决?

【问题讨论】:

【参考方案1】:

我只是使用open-uri库打开远程文件并附加它

require 'open-uri'

class MyMailer << ApplicationMailer
  def new_job(job_request)
     @job_request = job_request
     if @job_request.work_files.attached?
       @job_request.work_files.each do |file|
         temp_file = open(file.service_url).read
         attachments[file.blob[:filename]] =  mime_type: file.blob.content_type, content: temp_file 
       end
     end

    mail to: @job_request.email
  end
end

【讨论】:

以上是关于如何将文档附加到电子邮件 ActiveStorage 和 Cloudinary?的主要内容,如果未能解决你的问题,请参考以下文章

附加到电子邮件后删除文档

将 Word 文档作为附件附加 - 路径规范 ASP.NET MVC 3

如何将位图文件附加到电子邮件

如何使用 PHPMailer 从 PC 将文件附加到电子邮件

如何使用 Mandrill 将 csv 文件附加到电子邮件?

如何使用 PHP 邮件功能将 PDF 附加到电子邮件