在Learn-Rails教程

时间:2015-08-08 02:05:45

标签: ruby-on-rails railsapps learn-ruby-on-rails

我一直在Learn Ruby on Rails教程的“发送邮件”部分收到错误。

我尝试在本地计算机上克隆https://github.com/RailsApps/learn-rails.git,但问题仍然存在。

以下是我的代码:

user_mailer.rb

class UserMailer < ApplicationMailer
  default from: "do-not-reply@example.com"

  def contact_email(contact)
    @contact = contact
    mail(to: Rails.application.secrets.owner_email, from: @contact.email, :subject => "Website Contact")
  end
end

development.rb

config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: Rails.application.secrets.domain_name,
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: Rails.application.secrets.email_provider_username,
    password: Rails.application.secrets.email_provider_password
  }
  # ActionMailer Config
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  # Send email in development mode?
  config.action_mailer.perform_deliveries = true

secrets.yml

development:
  email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
  email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
  mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
  mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
  domain_name: example.com
  owner_email: <%= ENV["OWNER_EMAIL"] %>

我还确保在.bashrc文件中正确设置了环境变量。

非常感谢任何帮助,并提前感谢您!

3 个答案:

答案 0 :(得分:0)

对于开发,您可以使用开信刀宝石。发送电子邮件后,它会自动在您的默认浏览器中打开。

将以下内容添加到Gemfile的开发部分。

gem 'letter_opener'

答案 1 :(得分:0)

我也有同样的问题。我尝试了从禁用两步验证(Google)到在secrets.yml中硬编码我的凭据,但没有成功。

我使用了我的outlook.com凭据并且效果很好。

注意:这需要更改 development.rb

config.action_mailer.smtp_settings = {       
    address : "smtp.live.com"
    # everything else is identical.
}

答案 2 :(得分:0)

为gmail设置

ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.smtp_settings = {
      :address => "smtp.gmail.com",
      :domain => "gmail.com",
      :port => 587, 
      :user_name => "username",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true,
      :openssl_verify_mode => 'none' 
    }

说实话   config.action_mailer.raise_delivery_errors = true它将告知是否发生任何错误。

同时尝试端口25