【问题标题】:Sending MailChimp email with Rails使用 Rails 发送 MailChimp 电子邮件
【发布时间】:2015-08-26 07:56:32
【问题描述】:

(((我发现了与我类似的问题,但它们是针对第 3 方 mandrill gem 或 Heroku 的。我没有使用任何这些,只是 mandrill-api 本身。))

我正在尝试使用电子邮件确认(我们使用 Devise)来创建帐户。我已经设置了可确认的,一切正常。最初,我使用基本的 Devise 电子邮件来处理所有事情,它很好并且可以发送 - 但后来我尝试将其切换到我们的 MailChimp/Mandrill 帐户,并且电子邮件不会发送。我已经尝试了所有我能想到的东西,但我被卡住了。

请注意,它似乎与 Mandrill 通信 - 当我从 MailChimp 中删除确认指令模板或不将其发送到 Mandrill 时,我收到模板未找到错误。但是当我创建模板时,它实际上并没有发送。

日志中唯一的内容是:

NotificationMailer#confirmation_instructions: processed outbound mail in 5676.4ms

寄件人:

class NotificationMailer < ActionMailer::Base
    require 'mandrill'
    default from: "XXXXXXXXX <XXXXXX@XXXXXXXXXXXXX.com>"

    def mandrill_client
        @mandrill_client ||= Mandrill::API.new MANDRILL_API_KEY
    end

    def confirmation_instructions(record, token, opts={})
        template_name = "confirmation-instructions"
        template_content = []
        message = {
            to: [{email: record.email}],
            subject: "Confirmation Instructions",
            var_user_email: record.email,
            merge_vars: [
            {rcpt: record.email,
                vars: [
                    {name: "USER_EMAIL", content: record.email},
                    {name: "CONFIRMATION_LINK", content: user_confirmation_url(confirmation_token: token)}
                ]
            }]
        }
        mandrill_client.messages.send_template template_name, template_content, message
    end

end

Development.rb 文件相关部分:

config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { host: '192.168.33.111' }

config.action_mailer.smtp_settings = {
  address: "smtp.mandrillapp.com",
  port: 587,
  enable_starttls_auto: true,
  user_name: "XXXXXXXXXXXXXXXXX",
  password: "XXXXXXXXXXXXXXXXXX",
  authentication: "login",
}

我还从控制台对其进行了测试,也没有出现任何错误。似乎根本没有错误,但电子邮件从未发送过。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails email devise mailchimp mandrill


    【解决方案1】:

    所以在经历了很多痛苦之后,我仍然不完全确定最初的邮件格式有什么问题,但是我根据其他网站的方法对其进行了一些更改,如下所示,并且它起作用了。我没有改变其他任何东西。

    class NotificationMailer < ActionMailer::Base
      require 'mandrill'
    
      default from: "XXXXX <XXXXX@XXXXX>"
    
      def mandrill_client
        @mandrill_client ||= Mandrill::API.new XXXXXXXXXXXX
      end
    
      def confirmation_instructions(record, token, opts={})   
        template_name = "confirmation-instructions"
        template_content = []
        message = {
          :subject=> "Confirmation Instructions",
          :from_name=> "XXXXXXXXX",
          :text=> "Confirm your email",
          :to=>[
            {
              :email=> record.email,
              :name=> record.first_name + " " + record.last_name
            }
          ],  
          :from_email=>"no-reply@XXXXXXXXXXXXX.XXX",
          :merge_vars=>[
            {
              rcpt: record.email,
              vars: 
              [
                {name: "USER_EMAIL", content: record.email},
                {name: "USER_NAME", content: record.first_name + " " + record.last_name},
                {name: "CONFIRMATION_LINK", content: user_confirmation_url(confirmation_token: token)}
              ]
            }
          ]
        }
        mandrill_client.messages.send_template template_name, template_content, message
      end
    end
    

    注意

    :text=> "Confirm your email" 
    

    该字段未使用,我仍在调整它 - 只是想发布此内容,以便其他人可以免于遭受 MailChimp/Mandrill 极其繁琐的格式和糟糕的文档所带来的痛苦。

    仅供参考,我使用的唯一 gem 是 mandrill-api gem:

    gem 'mandrill-api', '~> 1.0.51', require: "mandrill"
    

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2015-07-13
      • 1970-01-01
      • 2011-07-14
      • 2016-08-03
      • 2016-02-11
      • 2016-08-01
      • 2015-06-28
      • 2018-06-02
      相关资源
      最近更新 更多