ruby-on-rails - 是否可以从 : with an email from database in Rails Action Mailer? 替换默认值

标签 ruby-on-rails ruby ruby-on-rails-4 actionmailer

我正在尝试将一封来自用户的电子邮件传递给默认的发件人:字段,使其看起来像是直接来自他们。这是我现在所拥有的。有什么方法可以将动态变量引入默认值 from 字段吗?

class IntroMailer < ActionMailer::Base
      default from: "Me@gmail.com"

      def intro_email(intro)
        @intro = intro
        mail(to: @intro.person1_email, subject: 'Testing Intro Email')
      end
    end

最佳答案

您可以在 Mailer 操作的 mail 方法中覆盖它:

class IntroMailer < ActionMailer::Base
  default from: "Me@gmail.com"

  def intro_email(intro, current_user)
    mail(to: intro.person1_email, subject: 'Testing Intro Email', from: current_user.email)
  end
end

但是一个警告。像谷歌这样的电子邮件客户端在检测垃圾邮件方面非常聪明。如果他们发现特定的 SMTP 服务器正在发送具有许多不同“发件人”属性的电子邮件,您的垃圾邮件评级将会上升,并且您的电子邮件将被垃圾邮件过滤器过滤掉。要解决此问题,请选择适合电子邮件类型的一两个默认 from 电子邮件(例如 support@mywebsite.com 和 jobs@mywebsite.com),然后添加动态 reply_to 属性代替。

class IntroMailer < ActionMailer::Base
  default from: "ourteam@oursite.com"

  def intro_email(intro, current_user)
    mail(to: intro.person1_email, subject: 'Testing Intro Email', reply_to: full_from(current_user))
  end

  private

  def full_from(user)
    address = Mail::Address.new user.email
    address.display_name = user.full_name
    address.format
  end
end

关于ruby-on-rails - 是否可以从 : with an email from database in Rails Action Mailer? 替换默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27138059/

相关文章:

mysql - Rails - 如何通过多个 ids(数组)查询

ruby - 旋转字符串中的字母,使每个字母移动 n 位到另一个字母

ruby-on-rails - 如何加密必须传输的 PIN?

jquery - 引用错误: Can't find variable: Rails

ruby-on-rails - 在没有 Lighttpd/Apache 的情况下服务 Web 应用程序

ruby-on-rails - Nginx/Passenger 的 Rails 应用程序错误

ruby-on-rails - 不需要 SSL 时如何重定向非 SSL 流量?

ruby-on-rails - 为不同的用户配置文件设计具有多态关联的用户

ruby-on-rails - 如何从另一个目录中获取 ruby​​ 文件

ruby-on-rails - 使用多个 yield 插入内容