【发布时间】:2014-03-25 23:10:21
【问题描述】:
我在开发环境中,我想通过我的控制台发送测试电子邮件。我让控制台运行良好,但它没有发送。
我转到 Spree 的邮件方法设置,这是我得到的:
我已经仔细检查了密码。我已经谷歌了。我不知道如何让这个东西工作。
关键问题:如何从开发环境中获取在 Spree 中工作的电子邮件?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 email spree
我在开发环境中,我想通过我的控制台发送测试电子邮件。我让控制台运行良好,但它没有发送。
我转到 Spree 的邮件方法设置,这是我得到的:
我已经仔细检查了密码。我已经谷歌了。我不知道如何让这个东西工作。
关键问题:如何从开发环境中获取在 Spree 中工作的电子邮件?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 email spree
问题是您需要一个可以接收您的电子邮件的本地电子邮件服务器。要在开发中测试设置,请安装 mailcatcher gem,您将在开发中用作 SMTP 服务器,捕获所有传入邮件并将它们显示在 http://localhost:1080/: 上
直接在终端运行
gem 安装 mailcatcher
然后在控制台中运行mailcatcher。一个玩具 SMTP 服务器将在端口 1025 上运行,捕获电子邮件并将它们显示在 HTTP 端口 1080 上。
然后只需转到 spree 管理面板并进行配置。以下设置非常适合我,无需编写任何代码。
点击send test mail后,我在本地主机上收到以下电子邮件:
【讨论】:
Spree 实际上使用 Spree::MailMethod 类在图形界面中输入的设置覆盖了 ActionMailer 设置。从好的方面来说,您可以在管理界面中进行设置,但有一些意想不到的行为。
我们维护着许多 Spree 商店,并且始终按照设置运行:
Spree.config do |config|
config.override_actionmailer_config = false
config.mails_from = "no-reply@yourdomain.com"
end
这将允许您像在任何其他 Rails 应用程序中一样配置 ActionMailer: http://guides.rubyonrails.org/action_mailer_basics.html#example-action-mailer-configuration
这是在 2.2.x 之后的下一个 Spree 版本中采用的标准程序。
https://github.com/spree/spree/pull/4377 已将 Web 配置提取到自己的 gem 以保持向后兼容性。
【讨论】:
config/initializers/spree.rb。
/preferences/configuration.rb:66:in method_missing':未定义的方法override_actionmailer_config=' for #<Spree::AppConfiguration:0xbe2d5dc> (NoMethodError)我做错了什么?
出现此问题是因为您没有本地电子邮件服务器来接收您的电子邮件。
第 1 步: 第一步是安装 mailcatcher gem 以测试开发中的设置。
您将使用它作为 SMTP 服务器来捕获所有传入的邮件并在http://localhost:1080/ 上显示它们:
第 2 步: 只需在控制台中的终端“gem install mailcatcher”中运行即可。
您会发现一个运行在端口 1025 上的 SMTP 服务器捕获电子邮件并在 HTTP 端口 1080 上显示它们
第 3 步: 您会发现一个运行在 1025 端口上的 SMTP 服务器捕获电子邮件并在 HTTP 端口 1080 上显示它们
添加行: gem 'spree_mail_settings',github:'spree-contrib/spree_mail_settings',分支:'master'
然后运行: 捆绑
第 4 步: 此外,转到“Spree 管理面板”并进行配置。这些设置将非常适合您,无需编写任何代码。
然后点击“发送测试邮件”
第 5 步:
您将在本地主机上收到一封电子邮件。
现在你的问题解决了。
【讨论】:
Spree commerce 使用 ActionMailer 发送电子邮件。如果你想在开发模式下发送电子邮件,你应该在config/enviranments/development.rb文件中启用delivery_method。
只要设置这个变量config.action_mailer.delivery_method = :smtp
【讨论】: