如何显示 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
但是当我收到电子邮件时 from
是 demo@gmail.com
并且在 development.rb
中定义了邮件程序的配置。但是我想 from
的 email
应该是 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
参数设置为某处的默认值,我相信您这样做了)
我使用自己的邮件程序,而不是根据 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
但是当我收到电子邮件时 from
是 demo@gmail.com
并且在 development.rb
中定义了邮件程序的配置。但是我想 from
的 email
应该是 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
参数设置为某处的默认值,我相信您这样做了)