【发布时间】:2014-05-10 13:45:45
【问题描述】:
我遇到了一个奇怪的错误。
尝试在用户注册后设置欢迎电子邮件。
根据服务器日志,我的代码发送了一封电子邮件,但用户没有收到。
这是我的代码:
models/user.rb
after_create :welcome_message
private
def welcome_message
UserMailer.welcome_email(self).deliver
end
和mailers/user_mailer.rb
def welcome_email(user)
@user = user
mail to: @user.email, subject: t("mailer.welcome_email.welcome")
end
这里是环境。错误发生在他们两个中
config/environments/development.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.mandrillapp.com',
port: '587',
domain: 'localhost:3000',
user_name: 'welcome@mysite.com',
password: 'blahblahblah',
authentication: 'plain',
enable_starttls_auto: true
}
和config/environments/production.rb
config.action_mailer.default_url_options = { :host => 'mysite.com' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.mandrillapp.com',
port: '587',
domain: 'mysite.com',
user_name: 'welcome@mysite.com',
password: 'blahblahblah',
authentication: 'plain',
enable_starttls_auto: true
}
我正在使用 Devise 注册用户。所以,也尝试通过 :confirmable 来做到这一点。结果是一样的——测试用户没有收到欢迎邮件。
Gemfile
gem 'rails', '3.2.12'
gem 'devise', '3.0.3'
gem "mail"
这里是服务器日志
Sent mail to user@hismail.com (1920ms)
Date: Sat, 10 May 2014
From: welcome@mysite.com
Reply-To: welcome@mysite.com
To: user@hismail.com
Message-ID: <aaa@aaa.mail>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome user@hismail.com!</p>
然而最终在 user@hismail.com 上没有欢迎电子邮件
有什么想法吗?
更新: 在互联网上,我看到没有其他人面临同样的问题 所以,我想我只是错过了一些东西。但无法弄清楚什么和在哪里。请帮帮我。
【问题讨论】:
-
Mandrill 为所有活动提供 API 日志。它可以从右上角的菜单中找到。这是否表明您的应用正在到达 mandrill 并要求它发送邮件?
-
不...我看到
You don't have any failed API calls和You don't have any successful API calls yet。有趣的。我是 Mandrill 的新手。这意味着实际上没有发送任何电子邮件。我的错在哪里? -
您将
config.action_mailer.raise_delivery_errors设置为什么?如果未设置(我认为它的默认值可能是false),请尝试设置:config.action_mailer.raise_delivery_errors = true并在该阶段检查您的日志。只是检查一下,您还应该将 Mandrill API 密钥设置为 SMTP 设置的用户名和密码,而不是您的 Mandrill 帐户详细信息。
标签: ruby-on-rails ruby-on-rails-3 devise actionmailer