根据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
中定义的用于配置邮件程序的电子邮件时。但是我想email
中的from
应该是current user
,这意味着当我
收到。
请帮助我。
答案 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
参数设置为默认值,我相信您已经这样做了)