2015-06-10 5 views
0

((Я нашел похожие вопросы для моего, но они специфичны для драгоценного камня mandrill третьей стороны или Heroku. Я не использую ни один из них, просто сам мандрилл-апи).)Отправка электронной почты MailChimp с Rails

Я пытаюсь использовать подтверждение по электронной почте (мы используем Devise) для создания учетной записи. Я настроил подтверждение, все с этим хорошо работает. Первоначально я использовал базовые электронные письма от разработчиков, и все было нормально, и я отправлял их, но затем я попытался переключить его на нашу учетную запись MailChimp/Mandrill, и электронные письма не отправят. Я пробовал все, что мог придумать, и я застрял.

Обратите внимание, что, как представляется, связь с Mandrill - когда я удаляю шаблон инструкций подтверждения из MailChimp или не отправляю его Mandrill, я получаю шаблон не найденной ошибки. Но когда я создаю шаблон, он никогда не отправляет.

Единственное, в журналах является:

NotificationMailer#confirmation_instructions: processed outbound mail in 5676.4ms 

почтоотправителя: файл

class NotificationMailer < ActionMailer::Base 
    require 'mandrill' 
    default from: "XXXXXXXXX <[email protected]>" 

    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", 
} 

Я также проверил его из консоли , и он также не дал никаких ошибок. Похоже, что ошибок нет, но электронная почта никогда не отправляет. Есть идеи?

ответ

0

Так что, после большой боли, я все еще не совсем уверен, что было не так с форматом почтовой программы, но я немного изменил ее на других сайтах, и это сработало. Я ничего не изменил.

class NotificationMailer < ActionMailer::Base 
    require 'mandrill' 

    default from: "XXXXX <[email protected]>" 

    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=>"[email protected]", 
     :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" 

не используется, я до сих пор тонкой настройки - просто хотел, чтобы отправить это, так что другие могут быть избавлены от боли, я был от rediculously утомительным Mailchimp/Mandrill в форматирование и ужасная документация.

И только для информации, единственный драгоценный камень, я использовал был мандрил-апи перл:

gem 'mandrill-api', '~> 1.0.51', require: "mandrill" 
Смежные вопросы