Подтвердить что ты не робот

Рельсы, почтовая программа не отправляется

Я полный новичок в Rails, и я пытаюсь отправить электронное письмо после того, как кто-то подписывается с помощью actionmailer.

Мои журналы говорят, что электронная почта отправляется, но gmail никогда не получает ее

конфигурации/Инициализаторы/setup_mail.rb

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "asciicasts.com",
  :user_name            => "asciicasts",
  :password             => "secret",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

отправители/user_mailer.rb

class UserMailer < ActionMailer::Base
  default :from => "[email protected]"

  def registration_confirmation(user)
    mail(:to => user.email, :subject => "Registered")
  end
end

Контроллеры/users_controller.rb

...
def create
    @user = User.new(params[:user])
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      sign_in @user
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end
...

Спасибо!

4b9b3361

Ответ 1

Убедитесь, что эта опция установлена ​​в config/environments/development.rb:

config.action_mailer.delivery_method = :smtp

Кроме того, в ActionMailer::Base.smtp_settings вам нужно указать действительную учетную запись gmail. Копирование вставки (асцикасты) здесь не будет.

См. этот вопрос для справки: Отправка почты с Rails 3 в среду разработки

Ответ 2

Вместо "smtp" вы можете использовать "sendmail"

ActionMailer::Base.delivery_method = :sendmail

ActionMailer::Base.sendmail_settings = { :address => "smtp.gmail.com",
     :port => "587", :domain => "gmail.com", :user_name => "[email protected]", 
    :password => "yyy", :authentication => "plain", :enable_starttls_auto => true }