新手问题 为啥我本地部署 ruby china, 注册用户,发不出邮件呢?

lihuazhang · 2012年10月11日 · 最后由 lihuazhang 回复于 2012年10月16日 · 4150 次阅读
after_create :send_welcome_mail
def send_welcome_mail
  UserMailer.delay.welcome(self.id)
end

根据这个代码,create 成功会发出邮件,我看到 log 里面也 render 了 welcome 的 layout。 但是就是收不到。

我保证 sendmail 是好用的。

默认 development 下邮件是不发送的。Ruby China 的代码里是用 letter_opener 的。

#1 楼 @ashchan 我改了一下 development.rb:

 config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :sendmail
  config.action_mailer.default_url_options = { :host => Setting.domain }

这样是可以的吧? PS 我切换到 production 模式 也是发不出来邮件。

#1 楼 @ashchan 我怀疑是 sidekiq 的 delay 造成了发布出来,但是不知道什么问题。

#3 楼 @lihuazhang production 下你要先启动 sidekiq 进程。

#4 楼 @ashchan 的确启动了。

  ruby-china git:(master) bundle exec sidekiq -c config/sidekiq.yml
2012-10-11T09:19:09Z 14308 TID-i000c INFO: Booting sidekiq 1.1.0 with Redis at 127.0.0.1:6379
2012-10-11T09:19:09Z 14308 TID-i000c INFO: Running in ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
2012-10-11T09:19:09Z 14308 TID-31ass INFO: Starting processing, hit Ctrl-C to stop

create 也成功了:

Started POST "/account" for 192.168.1.248 at 2012-10-11 17:20:29 +0800
Processing by AccountController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "user"=>{"login"=>"lihuazhang", "name"=>"lihuazhang", "email"=>"lihuazhang@hotmail.com", "email_public"=>"1", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"提交注册信息"}
Redirected to http://192.168.1.197:3000/
Completed 302 Found in 160ms


还是收不到邮件。

建议你检查一下 sidekiq.log ,看有没有成功运行任务的记录。另外,会不会已经发出了,但被标到垃圾邮件里去了?

还有 production 环境我记得是用 sendmail 的,你还得确认 sendmail 装了没有

实际上,目前线上的 Ruby China 邮件发送好像也是不能用的,忘了去修复…

#7 楼 @huacnlee sendmail 装了,我按照 tutorial 里面的 actionmailer 的例子,是能成功发送邮件的。我试了下线上的 ruby china,收到邮件了。 好奇怪啊。

#6 楼 @ashchan 垃圾邮件里没有,没有 sidekiq.log 吧。 bundle exec sidekiq -c config/sidekiq.yml,里面没有日志输出到标准输出。

#8 楼 @huacnlee 奇怪,昨天我用公司邮箱还能收到注册邮件的。今天用 gmail 就不行了。

#8 楼 @huacnlee 木有收到过 ruby-china 的邮件,线上好想也有问题。

看 /var/log/mail.log ,sendmail 程序有没有收到命令,有无错误

#13 楼 @Rei 没有收到命令。这个我也注意到了。好像代码没有触发,但是我有看到,welcome mail 已经 compose 好了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号