通过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_later
和deliver_now
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.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
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
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
答案 0 :(得分:0)
我看不到您的代码有任何重大问题。我要检查的第一件事是确保凭据正确。如果不是问题,如果没有日志信息,则不确定该问题。
答案 1 :(得分:0)
注意:自2014年7月15日起,Google加强了安全措施,现在阻止了它认为安全性较低的应用程序的尝试。您可以在此处更改Gmail设置以允许尝试。如果您的Gmail帐户启用了2要素身份验证,则需要设置一个应用密码,并使用该密码代替常规密码。另外,您也可以使用其他ESP发送电子邮件,方法是将上面的“ smtp.gmail.com”替换为提供商的地址。
您可以通过该文章链接检查Gmail安全设置吗?我想知道生产主机是否被阻止,因为它来自似乎不太安全的东西(托管服务器,而不是本地计算机)