2015-05-25 2 views
0

Я пытаюсь отправить электронное письмо на [email protected] с помощью Action Mailer (Ruby on Rails). Метод sendactivation корректно выполняется и отображается сообщение «Отправлено по электронной почте». Однако я никогда не получаю никаких писем. Фактически, выход «Тест» никогда не печатается. Мой webapp размещен на Heroku Cedar-10.Отправленные письма с помощью действия Mailer

class UsersController < ApplicationController 
    def sendactivation 
     UserMailer.welcome_email() 
     render :json => { 
     :result => "Email sent" 
     } 
    end 
    end 
end 

class UserMailer < ActionMailer::Base 
    def welcome_email() 
    mail(to: "[email protected]", 
     body: "Hello", 
     content_type: "text/html", 
     subject: "Already rendered!") 
    puts "Test" 
    end 
end 

Это конфигурация, которая у меня есть в моей конфигурации/environment/production.rb. На самом деле я хотел отправить его в Office 365, но я полагаю, что его легче отлаживать с помощью учетной записи Gmail.

config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    user_name:   '[email protected]', 
    password:    '########', 
    authentication:  'plain', 
    enable_starttls_auto: true } 

Что я делаю неправильно? Нужно ли мне что-то менять в моей конфигурации Gmail?

ANSWER: В дополнение к отмеченному ответу мне нужно было установить адрес «from» в методе welcome_email.

+1

Вы можете временно установить 'config.action_mailer.raise_delivery_errors = true' и проверить на наличие ошибок в ваших журналах. Отдельно я столкнулся с [этой статьей] (http://blog.mailgun.com/tips-tricks-avoiding-gmail-spam-filtering-when-using-ruby-on-rails-action-mailer/) о настройке сообщения ID для Gmail, который может стоить прочитать. В крайнем случае вы можете [настроить Gmail] (https://support.google.com/accounts/answer/6010255?hl=ru), чтобы разрешить доступ к менее безопасному приложению. –

ответ

1

Вызов доставки:

UserMailer.welcome_email.deliver 
1
UserMailer.welcome_email.deliver_now 

С Rails Guide: Смотрите раздел Метод 2.1.4

class SendWeeklySummary 
  def run 
    User.find_each do |user| 
      UserMailer.weekly_summary(user).deliver_now 
    end 
  end 
end