2017-07-10 69 views
0

我目前正在與郵件系統的應用程序。它工作正常,發送一封歡迎郵件併發送重置密碼的指令,但現在只有當我嘗試發送重置指令時,我纔有這個錯誤。Rails設計與gmail錯誤

ArgumentError (SMTP From address may not be blank: nil): 

我使用的是像這樣[email protected] 這裏是我的配置

development.rb

config.action_mailer.raise_delivery_errors = true 
config.action_mailer.perform_caching = false 
config.action_mailer.default_url_options = { host: 'localhost:3000' } 

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: '587', 
    domain: 'gmail.com', 
    authentication: :plain, 
    enable_starttls_auto: true, 
    user_name: Rails.application.secrets.mailer_username, 
    password: Rails.application.secrets.mailer_password 
} 

任何想法,自定義域?

編輯

class UserMailer < ApplicationMailer 
    default from: '[email protected]' 

    def welcome_email(user) 
    @user = user 
    @url = 'http://localhost:3000/users/sign_in' 
    mail(to: @user.email, subject: 'Bienvenue') 
    end 

    def generate_new_password_email 
    user = User.find(params[:user_id]) 
    user.send_reset_password_instructions 
    end 

    def reset_password; end 
end 

回答

2

它看起來像你沒有在你的電子郵件From頭。一個好的做法是把下面一行到你的ApplicationMailer

class ApplicationMailer 
    default from: '[email protected]' 

    # ... 
end 

要在繼承郵寄重寫此,簡單地聲明相同的語句。要覆蓋它在單個郵件的方法,把它放到mail調用就像這樣:

def new_message(user, message) 
    mail(
    to: user.email, 
    subject: "New message from #{message.sender.name}", 
    from: message.sender.email 
) 
end 

希望幫助

+0

我有一個'默認從'設置爲我的郵件正確的地址。此外,郵件由Devise發送,因爲它是重置密碼的郵件。它工作了一段時間,而不必重寫任何東西,所以問題也許在別的地方。 – LRP

+0

@LRP它在devise.rb中。需要這樣的東西:config.mailer_sender = ENV ['SMTP_USERNAME'] –

3

在devise.rb config.mailer_sender = '[email protected]'了評論。 Config.mailer_sender從來沒有初始化,所以總是爲零,即使我將它設置爲default from: