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

how display current_user/invited_by user email display of devise invitable invitation

我使用自己的邮件程序,而不是根据 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 中定义了邮件程序的配置。但是我想 fromemail 应该是 current user 意味着当我邀请某人时 收到。

请帮助我。

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

进行设置
: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 参数设置为某处的默认值,我相信您这样做了)