【问题标题】:How to add cloudinary file as email attachment in ActionMailer如何在 ActionMailer 中将云文件添加为电子邮件附件
【发布时间】:2019-03-21 11:58:52
【问题描述】:

我正在 Rails 中构建一个工作申请,我需要附加在工作申请中作为电子邮件附件上传的简历 (cv)。应用程序中的所有文件都使用 CarrierWave 上传到 Cloudinary。电子邮件由 Action Mailer 处理。在 ActionMailer 中,我有

  class ApplicantMailer < ApplicationMailer    
      def applicant_info(applicant)
        @applicant = applicant
        mail(to: @applicant.job.email, subject: 'Applicant Details')
      end
   end

在我的邮件视图模板中,我有

<p>Hi Recruiter, in this email, you would find the resume of the latest applicant</p>
<p>Resume: <%= cl_image_tag(@applicant.resume, :attachment=>true) %></p>

目前,这不会将云文件呈现为电子邮件中的附件。我需要能够将简历呈现为可读的附件文件。

【问题讨论】:

  • 我们期望@applicant.resume 返回什么?另外,您当前的代码会收到哪些错误消息?
  • @applicant.resume 返回从 cloudinary 下载文件的 url。当前代码可以很好地发送电子邮件,但 @applicant.resume(resume) 不是电子邮件中的附件。但我希望它是一个附件

标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave cloudinary


【解决方案1】:

这样的事情应该可以工作。我认为你不需要那个帮手

class ApplicantMailer < ApplicationMailer    
  def applicant_info(applicant)
    @applicant = applicant
    attachments[ open(applicant.resume) ]
    mail(to: @applicant.job.email, subject: 'Applicant Details')
  end
 end

模板

<p>Hi Recruiter, in this email, you would find the resume of the latest applicant</p>
<p>Resume: <%= image_tag @applicant.resume %></p>

【讨论】:

  • 它不工作。我收到以下错误“没有将 ResumeUploader 隐式转换为字符串”
  • 很难在没有看到完整堆栈跟踪的情况下判断,但如果您删除 &lt;p&gt;Resume: &lt;%= image_tag @applicant.resume %&gt;&lt;/p&gt; 电子邮件是否正常工作并附加文件会发生什么?如果不是,我怀疑@applicant.resume 不是你想的那样。 @applicant 是什么类型的对象,.resume 是一种方法?关系?我们只能根据您提供的信息进行猜测。
  • @applicant 是模型申请者的实例变量,.resume 是载波对象,它是申请者模型中的列字段。
  • 更新您的问题以在申请人模型中显示相关代码并添加错误的完整堆栈跟踪。
猜你喜欢
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 2012-06-06
相关资源
最近更新 更多