【问题标题】:how display current_user/invited_by user email display of devise invitable invitation如何显示 current_user/invited_by 用户电子邮件显示设计邀请
【发布时间】:2018-12-17 13:53:54
【问题描述】:

根据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 中定义用于邮件配置的电子邮件时。但是我想emailfrom 应该是current user 意味着当我邀请某人时 收到了。

请帮帮我。

【问题讨论】:

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


    【解决方案1】:

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

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

    基本上只是将from格式化为Sender's name &lt;your@email.com&gt;

    如果你想用用户的电子邮件地址添加一个reply-to,你可以将它作为参数传入,格式如下:

    :reply_to => user.email
    

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

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

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

    【讨论】:

    • 但我的老板不明白,他说。 No security concerns. Users are signing up to our service and we're sending invite emails on their behalf.Lots of products do this
    • 很遗憾你的老板弄错了。让他给你一个具体的例子,说明他在野外寻找什么。我很确定他找不到一个。这是一个网站,其中列出了您“代表”用户发送时唯一真正的选择:postmarkapp.com/support/article/…
    • 感谢您的大力指导。现在我的老板说好吧,如果这仅适用于这种方式,那么您必须将“回复”作为发件人的电子邮件,而不是我们的配置电子邮件。
    • 有可能吗??
    • 我已更新我的答案以显示如何添加reply to。只需将您的 mail(...) 方法作为额外参数传入即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多