我面对一个奇怪的错误。
尝试在用户注册后设置欢迎电子邮件。
根据服务器日志,我的代码会发送一封电子邮件,但用户却没有收到。
这是我的代码:
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注册用户。因此,也尝试通过以下方式实现:确认。结果是一样的 - 测试用户没有收到欢迎电子邮件。
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
有什么想法吗?
UPD: 在互联网上,我看到没有其他人面临同样的问题 所以,我想我只是遗漏了一些东西。但无法弄清楚是什么和在哪里。请帮帮我。
答案 0 :(得分:0)
试试这个: -
在config / initializers /文件夹中创建一个名为setup_mail.rb的文件,使其看起来像
config/initializers/setup_mail.rb
并将以下代码放在该文件中: -
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
:address => "smtp.mandrillapp.com",
:domain => "mysite.com",
:port => 80,
:user_name => "username",
:password => "blahblahblah",
:authentication => :plain
}
ActionMailer::Base.default_url_options[:host] = "mysite.com"
从 config / environments / development.rb 和 config / environments / production.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
}