2015-09-08 5 views
3

Я получаю эту ошибку при использовании почтовой программы для отправки почты через мою учетную запись gmail.535-5.7.8 Имя пользователя и пароль не принимается

Net :: SMTPAuthenticationError в SweepstakesController # показать 535-5.7.8 имя пользователя и пароль не принимаются.
Дополнительная информация: УчастникMailer.winner_confirmation (@result) .deliver_now!

Я проверил мой адрес электронной почты и пароль, я перезапустил свой сервер, также я прошел все предыдущие вопросы, связанные с этой ошибкой, и реализовал каждый ответ, но безрезультатно. Мой файл development.rb является:

config.action_mailer.default_url_options = { host: 'localhost', port:  3000} 
ActionMailer::Base.delivery_method= :smtp 
ActionMailer::Base.smtp_settings = { 
    :address =>"smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :user_name => "[email protected]", 
    :password => "my_password", 
    :authentication => 'plain', 
    :openssl_verify_mode => 'none' 
} 

Логика в контроллере:

def show 
    @sweepstake = Sweepstake.find(params[:id]) 
    @participant = Participant.where(:sweepstake_id => @sweepstake.id) 
    b = @sweepstake.winner_count 
    @result = Array.new 
    b.times do 
    @result << @participant[rand(@participant.count)] 
    end 
    ParticipantMailer.winner_confirmation(@result).deliver_now! 
end 

participant_mailer.rb файл:

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

    def winner_confirmation(result) 
    @result = result 
    @url = 'http://example.com/login' 

    Rails.logger.info(@result.inspect) 
    @result.each do |i| 
     mail(to: i.participant_email, subject: 'Congratulation') 
    end 
    end 
end 

ответ

1

Согласно RailsGuides, конфигурация Gmail выглядит следующим образом:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'example.com', 
    user_name:   '<username>', 
    password:    '<password>', 
    authentication:  'plain', 
    enable_starttls_auto: true } 

enable_starttls_auto у вас отсутствует. И я думаю, что в domain вы должны разместить свой домен, а не gmail.com.

Это работало для меня с настройками выше, после того как я включил less secure applications для своей учетной записи.

Также, как я читал в документации Google, вам может понадобиться использовать Unlock Captcha.

+0

Я также попытался включить enable_starttls_auto, но один из ответов предложил попробовать удалить его, а gmail.com - это мой домен электронной почты –

+0

С какими рельсами вы работаете? – dimakura

+0

Я использую Rails 4.2.1 –

2

Я нашел ответ Goto config/initializers/setup_mail.rb Проверьте там соответствует ли конфигурация конфигурации записанной в development.rb file.It должен выглядеть следующим образом в обоих файлах:

config.action_mailer.smtp_settings = { 
    :address =>"smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :user_name => "[email protected]", 
    :password => "**********", 
    :authentication => 'plain', 
    :enable_starttls_auto => true, 
    :openssl_verify_mode => 'none' 
    } 

Это было решить мою проблему.

+1

Я уверен, что вам не нужен этот инициализатор. Вероятно, Google уже произвел изменения в вашей учетной записи. Если вы удалите его, достаточно указать конфигурацию 'development.rb'. – dimakura

+0

вы правы, я посмотрел и узнал –

+0

Если вы исправляете проблему для уже существующего проекта, то, пожалуйста, найдите настройки config/initializers/setup_mail.rb ...это сработало и для меня –