首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在开发环境中使用Rails3发送邮件

在开发环境中使用Rails3发送邮件
EN

Stack Overflow用户
提问于 2010-11-30 19:23:46
回答 8查看 34.2K关注 0票数 54

我敢肯定这个问题以前已经被问了一百万次了,但是我找不到任何适合我的方法,所以我再问一遍!

我只需要一种在Rails3中使用ActionMailer发送电子邮件的方法。我已经阅读了很多教程,包括新ActionMailer上的Railscast教程,我可以看到正在生成的邮件,但我没有收到它们。

我尝试了一系列不同的方法,但它们通常相当于配置以下设置

代码语言:javascript
运行
复制
ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => "587",
  :domain               => "gmail.com",
  :user_name            => "xxx@gmail.com",
  :password             => "yyy",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

我已经在我的config/environment ment.rb、config/environment/development.rb中尝试了上面的代码(当然包含有效的gmail详细信息),目前它在自己的initialiser config/initialisers/setup_mail.rb中

我还尝试了一些不同的smtp服务器,包括Gmail和Sendgrid,相应地调整了smtp设置,但仍然没有结果。我可以看到终端中的邮件和开发日志,仅此而已。

有没有人知道我可能错过了让ActionMailer工作所需的设置的任何其他问题?如果做不到这一点,有没有办法获得更多关于为什么邮件不被发送的信息?我有过

代码语言:javascript
运行
复制
config.action_mailer.raise_delivery_errors = true

在我的config/development.rb中设置,但开发日志仍然显示与我在终端中看到的相同。

无论如何,我在Ubuntu 10.04笔记本电脑上进行开发,以防需要任何特定的设置。

非常感谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-12-07 22:39:48

好吧,我已经解决了这个问题,但是为什么这个方法有效,而其他方法不起作用,我不知道。

解决方案是在config/initialisers/setup_mail.rb中创建一个包含以下内容的初始化器

代码语言:javascript
运行
复制
if Rails.env != 'test'
  email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))
  ActionMailer::Base.smtp_settings = email_settings[Rails.env] unless email_settings[Rails.env].nil?
end

然后,我添加了config/email.yml,其中包含开发和生产电子邮件帐户的详细信息

代码语言:javascript
运行
复制
development:
  :address: smtp.gmail.com
  :port: 587
  :authentication: plain
  :user_name: xxx
  :password: yyy
  :enable_starttls_auto: true
production:
  :address: smtp.gmail.com
  :port: 587
  :authentication: plain
  :user_name: xxx
  :password: yyy
  :enable_starttls_auto: true

就像我说的,不知道为什么,但这似乎起到了作用。感谢所有人的指点

票数 54
EN

Stack Overflow用户

发布于 2010-11-30 20:32:18

我在config/environments/development.rb中有以下内容

代码语言:javascript
运行
复制
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true

实际的邮件配置,我放在config\application.rb中的config.actionmailer.*

希望这能有所帮助:)

票数 27
EN

Stack Overflow用户

发布于 2010-11-30 20:11:33

尝试使用“sendmail”而不是“smtp”。

代码语言:javascript
运行
复制
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = {
  :address              => "smtp.gmail.com",
  :port                 => "587",
  :domain               => "gmail.com",
  :user_name            => "xxx@gmail.com",
  :password             => "yyy",
  :authentication       => "plain",
  :enable_starttls_auto => true
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4313177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档