Ruby on Rails-在生产中未收到“欢迎电子邮件”

时间:2019-06-08 22:27:56

标签: ruby-on-rails ruby heroku actionmailer

通过Action Mailer创建新用户时,我尝试发送欢迎电子邮件。我在这里遵循了指南:https://guides.rubyonrails.org/action_mailer_basics.html

在localhost:3000上创建用户时,电子邮件成功,但是当我在生产环境(Heroku)中进行部署和测试时,不会成功。

更糟糕的是,我在Heroku日志中没有看到错误。

我现在不确定要检查什么。由于配置相同,我尝试将所有内容都移到application.rb文件中(请参阅:ActionMailer doesn't work in production

我认为它可能正在发送延迟的消息,但是我已经尝试过了 UserMailer.with(user: @user).welcome_email.deliver_laterdeliver_now

config / application.rb

config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      address:              'smtp.gmail.com',
      port:                 587,
      domain:               'gmail.com',
      user_name:            ENV["GMAIL_USERNAME"],
      password:             ENV["GMAIL_PASSWORD"],
      authentication:       'plain',
      enable_starttls_auto: true }

config / environments / production.rb

config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false

mailers / user_mailer

class UserMailer < ApplicationMailer
  default from: 'pickleballsocial@gmail.com'

  def welcome_email
    @user = params[:user]
    @url  = 'https://pickleballsocial.herokuapp.com'
    mail(to: @user.email, subject: 'Welcome Pickleball Social')
  end
end

users_controller

def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        session[:user_id] = @user.id
        # Tell the UserMailer to send a welcome email after save
        UserMailer.with(user: @user).welcome_email.deliver_later

        format.html { redirect_to(@user, notice: 'User was successfully created.') }
        format.json { render json: @user, status: :created, location: @user }

        #redirect_to user_path(@user)
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

2 个答案:

答案 0 :(得分:0)

我看不到您的代码有任何重大问题。我要检查的第一件事是确保凭据正确。如果不是问题,如果没有日志信息,则不确定该问题。

答案 1 :(得分:0)

guides

  

注意:自2014年7月15日起,Google加强了安全措施,现在阻止了它认为安全性较低的应用程序的尝试。您可以在此处更改Gmail设置以允许尝试。如果您的Gmail帐户启用了2要素身份验证,则需要设置一个应用密码,并使用该密码代替常规密码。另外,您也可以使用其他ESP发送电子邮件,方法是将上面的“ smtp.gmail.com”替换为提供商的地址。

您可以通过该文章链接检查Gmail安全设置吗?我想知道生产主机是否被阻止,因为它来自似乎不太安全的东西(托管服务器,而不是本地计算机)