如何显示设计邀请邀请的current_user / invited_by用户电子邮件显示

时间:2018-12-17 13:53:55

标签: ruby-on-rails ruby devise rubygems devise-invitable

根据devise文档,我使用自己的邮件程序而不是为我设计电子邮件内容。

这是我的方法:

class User < ActiveRecord::Base
  attr_reader :raw_invitation_token
end

class InvitationsController < Devise::InvitationsController
  def create
    @from    = params[:from]
    @subject = params[:invite_subject]
    @content = params[:invite_content]

    @user = User.invite!(params[:user], current_user) do |u|
      u.skip_invitation = true
    end


    email = NotificationMailer.invite_message(@user, @from, @subject, @content)
  end
end

class NotificationMailer < ActionMailer::Base
  def invite_message(user, venue, from, subject, content)
    @user = user
    @token = user.raw_invitation_token
    invitation_link = accept_user_invitation_url(:invitation_token => @token)

    mail(:from => from, :bcc => from, :to => @user.email, :subject => subject) do |format|
      content = content.gsub '{{first_name}}', user.first_name
      content = content.gsub '{{last_name}}', user.first_name
      content = content.gsub '{{full_name}}', user.full_name
      content = content.gsub('{{invitation_link}}', invitation_link)
      format.text do
        render :text => content
      end
    end
  end
end

但是当我收到fromdemo@gmail.com且在development.rb中定义的用于配置邮件程序的电子邮件时。但是我想email中的from应该是current user,这意味着当我  收到。

请帮助我。

1 个答案:

答案 0 :(得分:1)

这是不可能的。想想如果有人可以使用别人的电子邮件地址发送电子邮件的后果!最佳选择是在保留标准电子邮件地址的同时,在from标头中设置发件人的姓名。您可以使用

进行设置
:from => "#{user.first_name} #{user.last_name} <#{from}>"

基本上只是将from设置为Sender's name <your@email.com>

如果要使用用户的电子邮件地址添加reply-to,则可以使用以下格式将其作为参数传递:

:reply_to => user.email

要使用您提供的示例,它看起来像这样:

mail(:reply_to => from, :bcc => from, :to => @user.email, :subject => subject) do |format|

(这假设您已经将from参数设置为默认值,我相信您已经这样做了)