如何将文档附加到电子邮件 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 将文件附加到电子邮件