我在使用带有Gmail的ActionMailer发送电子邮件时遇到了一些问题。我曾试图使用Mandrill,但它还没有发送。使用gmail测试ActionMailer时,它仅在开发中工作,但在生产中似乎存在问题。
我尝试了多种解决方案,但似乎没有任何效果。我已经尝试在environment.rb中设置动作邮件设置,从gmail交换到mandrill。我似乎无法弄清楚我错过了什么。
让我知道你的想法。我已在下面提供了代码段
production.rb:
config.action_mailer.default_url_options = { :host => ENV["HEROKU_DOMAIN"] }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: "smtp.mandrillapp.com",
port: 587,
domain: ENV["HEROKU_DOMAIN"],
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["HEROKU_USERNAME"],
password: ENV["MANDRILL_KEY"]
}
email_signup.rb:
class EmailSignup < ApplicationMailer
default from: "example@gmail.com"
def sample_email(user)
@user = user
mail subject: "test", to: user.email
end
end
users_controller.rb:
def create
@user = User.new(user_params)
if @user.save
@user.save
EmailSignup.sample_email(@user).deliver
redirect_to thanks_path
else
redirect_to root_path
end
end
答案 0 :(得分:0)
请尝试使用此配置,我认为default_url_options
和smtp domain name
存在问题。你也可以省略其他配置。
config.action_mailer.default_url_options = { host: ENV['DEFAULT_URL_OPTIONS'] }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.mandrillapp.com',
port: 587,
domain: 'heroku.com',
user_name: ENV['MANDRILL_USERNAME'],
password: ENV['MANDRILL_APIKEY'],
authentication: 'plain'
}
您的默认网址选项应该是服务器的完整域名,例如。
mytestapp.herokuapp.com
答案 1 :(得分:0)
Neo的解决方案解决了我的问题。
我所做的就是在Heroku上设置环境变量。
$ heroku config:set HEROKU_USERNAME = ...
和所有其他变量并修复它。