在Rails应用程序中发送电子邮件

时间:2016-06-23 07:52:11

标签: ruby-on-rails ruby ruby-on-rails-4 actionmailer

所以我有一个rails应用程序,recruiter发布一份工作(招聘人员has_many jobs,所有关联都设置正确),users可以点击发送的申请按钮使用Action Mailer向该特定工作的招聘人员发送的电子邮件。

UserRecruiter是由Devise创建的两个独立模型。

作业由rails g scaffold Job .....

生成

到目前为止我所拥有的:

ApplyMailer.rb:

class ApplyMailer < ApplicationMailer
  def new_apply(job)
    @user = current_user
    @job = job
    mail to: @job.recruiter.email,
         subject: "Someone whats to appy for #{@job.title}"
  end
end

乔布斯#show view:

<%= button_to(apply_path, class:"btn btn-info") do %>
   Apply
<% end %>

Jobs_controller.rb:

def sendemail
  @job = Job.find(params[:id])
  ApplyMailer.new_apply(@job).deliver_now
end

的routes.rb

post '/apply' => 'jobs#sendemail'

首先,我不确定我是否正确地按照我想要达到的目的这样做。我想做的是:

因此,该按钮位于jobs#show页面上,应将job作为参数并向associated recruiter发送电子邮件。 current_user (User model)将是尝试申请职位的用户,因此在电子邮件视图中,它会显示用户的姓名(请在下面查看)。

new_apply.html.erb:

<div class="">
  <h2><%= @user.profile.name %> want to apply for the job</h2>
</div>

问题是按下按钮后如何将recruiter的电子邮件发送到job帖子。电子邮件需要包含current_user名称和电子邮件。以上是我尝试过的,但没有发送电子邮件。

由于

2 个答案:

答案 0 :(得分:2)

控制器中的

def create
  # creating your job
  if @job.create
    ApplyMailer.new_apply(current_user, job).deliver_now
  else
    # what you want
  end
end

并添加到您的用户邮寄

class ApplyMailer < ApplicationMailer
  def new_apply(user, job)
    @user = user
    @job = job
    mail to: @job.recruiter.email,
         subject: "Someone whats to appy for #{@job.title}"
  end
end

顺便说一句

您必须根据Rails doc

根据CRUD使用路线

答案 1 :(得分:1)

使用Action Mailer发送邮件。

  class UserMailer < ApplicationMailer
  default from: 'notifications@example.com'

  def welcome_email(user)
    @user = user
    @url  = 'http://example.com/login'
    mail(to: @user.email,
         subject: 'Welcome to My Awesome Site',
         template_path: 'notifications',
         template_name: 'another')
  end
end

有关更多信息,请使用此链接: -

http://guides.rubyonrails.org/action_mailer_basics.html