簡體   English   中英

在Learn-Rails教程中出現錯誤“發送消息需要SMTP到地址”

[英]Error “An SMTP To address is required to send a message” on Learn-Rails Tutorial

我一直在學習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文件中正確設置了環境變量。

任何幫助將不勝感激,並提前感謝您!

對於開發,您可以使用開信刀寶石。 發送電子郵件后,它將自動在默認瀏覽器中打開。

將以下內容添加到Gemfile的開發部分。

gem 'letter_opener'

我也有同樣的問題。 我嘗試了從禁用兩步驗證(Google)到在secrets.yml中硬編碼我的憑據,但沒有成功。

我使用了我的outlook.com憑據,它運行得很好。

注意:這需要更改development.rb

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

為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' 
    }

make it true config.action_mailer.raise_delivery_errors = true它會告訴是否發生任何錯誤。

也嘗試端口25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM