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

Send email in Rails Application

所以我有一个 rails 应用程序,其中 recruiter post 是一份工作(招聘人员 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

工作#显示视图:

<%= 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 recruitercurrent_user (User model) 将是试图申请该工作的用户,因此在电子邮件视图中它会显示用户的姓名(请在下方查看)。

new_apply.html.erb:

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

问题是按下按钮后如何向 recruiter 发送关于 job post 的电子邮件。电子邮件需要包含 current_user 名称和电子邮件。以上是我试过的方法,但是没有发送电子邮件。

谢谢

在你的控制器中

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 使用路由

使用 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

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

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