2013-10-10 2 views
4

Я пытаюсь отправить команды сброса пароля с помощью утилиты с Rails. Пользователь нажимает ссылку «забыли пароль», затем они вводят свой адрес электронной почты, чтобы получить инструкции по сбросу пароля. Я вижу, что электронное письмо отправляется в журнале разработчиков, но я не получаю тестовое электронное письмо, и я вижу ошибку ниже. Любые идеи о том, что я делаю неправильно?Отправить Сбросить пароль Инструкции с помощью Devise

Timeout::Error - execution expired 

В user_mailer.rb я следующее:

class UserMailer < ActionMailer::Base 
include Devise::Mailers::Helpers 

default :from => ENV["EMAIL_ADDRESS"] 

def reset_password_instructions(record, opts={}) 
    mail(:to => record, :subject => "Reset Password Instructions") 
end 

end 

Я проверяю в разработке, так что мой development.rb имеет следующее:

# ActionMailer Config 
config.action_mailer.default_url_options = { :host => 'localhost:3000' } 
config.action_mailer.delivery_method = :smtp 
# change to true to allow email to be sent during development 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.default :charset => "utf-8" 

config.action_mailer.smtp_settings = { 
:address => "smtp.mandrillapp.com", 
:port  => 25, 
:user_name => ENV["MANDRILL_USERNAME"], 
:password => ENV["MANDRILL_API_KEY"], 
:enable_starttls_auto => true, # detects and uses STARTTLS 
:authentication => 'login', # Mandrill supports 'plain' or 'login' 
:domain => 'mydomain.com', # your domain to identify your server when connecting 
} 

И пользователя. rb, у меня есть следующее:

def send_reset_password_instructions 
UserMailer.reset_password_instructions(self.email).deliver 
end 

Как я уже говорил выше, я вижу письмо генерируется в журналах прямо перед тайм-аута - ниже полный трассировки стека:

Started GET "https://stackoverflow.com/users/password/new" for 127.0.0.1 at 2013-10-10 17:32:24 -0500 
Processing by Devise::PasswordsController#new as HTML 
Rendered devise/passwords/new.html.erb within layouts/application (3.7ms) 
Rendered layouts/_navigation.html.erb (1.6ms) 
Rendered layouts/_messages.html.erb (0.1ms) 
Completed 200 OK in 101ms (Views: 100.6ms | ActiveRecord: 0.0ms) 


Started POST "https://stackoverflow.com/users/password" for 127.0.0.1 at 2013-10-10 17:32:28 -0500 
Processing by Devise::PasswordsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"CebAAlhJgxz1yDEi5BvsJ/dOdUpAHl08yrG1NCVgi/o=", "user"=>{"email"=>"[email protected]"}, "commit"=>"Continue"} 
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
Rendered user_mailer/reset_password_instructions.html.erb (0.1ms) 

Sent mail to [email protected] (30018ms) 
Date: Thu, 10 Oct 2013 17:32:28 -0500 
From: [email protected] 
To: [email protected] 
Message-ID: <[email protected]ail> 
Subject: Reset Password Instructions 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 

<p>Hello!</p> 

<p>Someone has requested a link to change your password. You can do this through the link below.</p> 



<p>If you didn't request this, please ignore this email.</p> 
<p>Your password won't change until you access the link above and create a new one.</p> 

Completed 500 Internal Server Error in 30044ms 
+0

Вы успешно отправлены по электронной почте, используя свой аккаунт Mandrill иначе? Я бы порекомендовал попробовать [MailCatcher] (http://mailcatcher.me/) отправить почту в разработку. Если это сработает, вы можете начать сужаться там, где проблема в вашей конфигурации. –

+0

Спасибо - я пробовал MailCatcher, и он показывает сообщение как отправленное правильно (хотя я не получаю его по электронной почте). Любые идеи по устранению неполадок конфигурации мандрилла? У меня уже давно работает mailchimp для приветственного сообщения и добавления пользователей в общие почтовые кампании, но пока еще не выяснили транзакционную электронную почту. Спасибо – pvskisteak5

+0

MailCatcher перехватывает исходящую почту и делает ее доступной в веб-интерфейсе, поэтому вы не должны ее получать. Вместо этого вы должны увидеть его в 127.0.0.1:1080 в своем браузере. Что касается Mandrill, я считаю, что вам все равно придется настраивать postfix или какой-либо другой интерфейс smtp на вашей главной машине, если вы этого еще не сделали. Это довольно распространенная проблема, поэтому вы должны иметь возможность указывать данные или настройки вашей ОС. –

ответ

Смежные вопросы