3

我在学习 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

发展.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

秘密.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 文件中正确设置了环境变量。

任何帮助将不胜感激,并提前感谢您!

4

3 回答 3

0

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

我使用了我的 outlook.com 凭据,它运行良好。

注意:这需要更改development.rb

config.action_mailer.smtp_settings = {       
    address : "smtp.live.com"
    # everything else is identical.
}
于 2015-08-09T03:28:10.020 回答
0

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

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

gem 'letter_opener'
于 2015-08-08T03:37:07.417 回答
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

于 2015-09-26T21:45:11.653 回答