2017-07-10 1 views
0

Je travaille actuellement sur une application avec un système mailer. Il fonctionnait bien, envoyant un email de bienvenue et envoyant des instructions pour réinitialiser le mot de passe, mais maintenant et seulement quand j'essaye d'envoyer des instructions de réinitialisation j'ai cette erreur.Rails concevoir avec des erreurs gmail

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

J'utilise un domaine personnalisé comme si [email protected] Et voici ma configuration

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 
} 

Toute idée?

Modifier

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 

Répondre

2

Il semble que vous n'avez pas dans votre e-mail en-tête From. Une bonne pratique serait de mettre la ligne suivante dans votre ApplicationMailer:

class ApplicationMailer 
    default from: '[email protected]' 

    # ... 
end 

Pour remplacer dans vos expéditeurs de courrier héritant, il suffit de déclarer la même déclaration. Pour le remplacer dans les méthodes de messagerie individuelles, la mettre dans le Invoquez comme mail:

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

espoir qui aide

+0

J'ai un paramètre 'default from' à la bonne adresse dans mon mailer. Aussi le mail est envoyé par Devise car c'est un mail pour réinitialiser un mot de passe. Cela a fonctionné pendant un certain temps sans avoir à remplacer quoi que ce soit donc le problème est peut-être ailleurs. – LRP

+0

@LRP c'est dans devise.rb. Besoin de quelque chose comme ceci: config.mailer_sender = ENV ['SMTP_USERNAME'] –

3

En devise.rb config.mailer_sender = '[email protected]' avait été commenté. Config.mailer_sender n'a jamais été initialisé et est donc toujours nul même si je le mets avec default from: