首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过电子邮件作为附件发送回形针文件- Rails

通过电子邮件作为附件发送回形针文件- Rails
EN

Stack Overflow用户
提问于 2017-08-31 22:36:43
回答 1查看 1K关注 0票数 2

我有一份表格,当潜在的雇员有兴趣为公司工作时,他/她会填写并附上一份简历。意见书将交给公司代表,并附上附件。电子邮件正在通过,但附件不是文件,我不知道如何正确配置它。在提交的电子邮件中,附件中只写着“文档”。

career_mailer.rb

代码语言:javascript
复制
class CareerMailer < ApplicationMailer

  default from: "career@conciergenursingdirect.com"



  def career_inquiry(career)
    @career = career
     attachments['attachment.extension'] = document
    mail(to: "michele@conciergenursingdirect.com", subject: "This is just a test from Jay")
  end
end

career.rb (模型)

代码语言:javascript
复制
class Career < ApplicationRecord

    has_attached_file :document

    validates_attachment_size :document, :less_than => 25.megabytes    
    validates_attachment_presence :document
     validates_attachment_content_type :document, :content_type => ["application/pdf","application/vnd.ms-excel",     
                                                                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                                                                    "application/msword", 
                                                                    "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
                                                                    "text/plain"]

    email_regex = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i

    validates :name, :presence => true,
              :length          => { :maximum => 50 }
    validates :subject, :presence => true,
              :length          => { :maximum => 50 }
    validates :phone, :presence => true,
    :length          => { :maximum => 50 }
    validates :email, :presence => true,
              :format          => {:with => email_regex }
    validates :message, :presence => true,
              :length          => { :maximum => 5000 }

end

careers_controller.rb

代码语言:javascript
复制
class CareersController < ApplicationController
  def new
  @career = Career.new

  end
  def show
    @career = Career.find(params[:id])
  end 

  def create
    # fail
    @career = Career.create(career_params)
    if @career.save
      CareerMailer.career_inquiry(@career).deliver
      redirect_back(fallback_location: root_path)
    else
      flash[:error] = @career.errors.full_messages
      redirect_back(fallback_location: root_path)
    end


  end
  private
  def career_params
    params.require(:career).permit(:name, :phone, :subject, :email, :message, :document)
  end
end

更新

在我的职业邮件中,我正在尝试以下几点:

代码语言:javascript
复制
attachments[career.document.attach_file_name] = File.read(career.document.attach.path)

我得到了以下错误:

更新2

我仍然在做这个工作,但我认为,基于我所读到的一切,我需要在把回形针文件保存到模型之前把它拉出来,所以我会想办法这样做,这样我就可以把上传的简历作为附件发送了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-01 03:40:18

经过几个小时的尝试和错误,我终于找到了它,这是糟糕的,因为它只有1行。基本上,我所要做的就是在我的career_mailer.rb中添加以下内容:

代码语言:javascript
复制
attachments[@career.document_file_name] = File.read(@career.document.path )

document_file_name实际上是我表中列的名称,其中回形针保存文档的名称。如果您使用回形针作为文件、图像等,这种情况可能会改变。我选择使用文档这个词。

这是对我有用的最后一款产品:

代码语言:javascript
复制
class CareerMailer < ApplicationMailer

  default from: "career@conciergenursingdirect.com"



  def career_inquiry(career)
    @career = career

    attachments['resume'] = File.read( @career.document.path ) 



    mail(to: "michele@conciergenursingdirect.com", subject: "This is just a test from Jay")
  end
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45991021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档