电子邮件:服务器发送但用户没有收到

时间:2014-05-10 13:45:46

标签: ruby-on-rails ruby-on-rails-3 devise actionmailer

我面对一个奇怪的错误。

尝试在用户注册后设置欢迎电子邮件。

根据服务器日志,我的代码会发送一封电子邮件,但用户却没有收到。

这是我的代码:

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: 在互联网上,我看到没有其他人面临同样的问题 所以,我想我只是遗漏了一些东西。但无法弄清楚是什么和在哪里。请帮帮我。

1 个答案:

答案 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
}