5
votes

I am trying to send reset password instructions using devise with Rails. The user clicks the 'forgot password link', then they enter their email address to receive the reset password instructions. I see the email is sent in the dev log, but I am not receiving my test email and I see the error below. Any ideas on what I am doing incorrectly?

Timeout::Error - execution expired

In user_mailer.rb, I have the following:

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

I am testing in development, so my development.rb has the following:

# 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
}

And in user.rb, I have the following:

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

As I mentioned above, I am seeing the email being generated in the logs right before it times out - below is the full stack trace:

Started GET "/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 "/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: <52572afc78c10_e9e43ffb7d69b4ec31274@Patricks-MacBook-Air.local.mail>
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
1
Have you successfully sent email using your Mandrill account otherwise? I would recommend trying out MailCatcher to send mail in development. If that works, you can start to narrow down where the problem is in your configuration. - Zach Kemp
Thanks - I tried MailCatcher and it shows the message as being sent correctly (although I am not receiving it via email). Any ideas on troubleshooting the mandrill configuration? I have had mailchimp working well for a while now for a welcome message and adding users to general email campaigns, but have not figured out the transactional email yet. Thanks - pvskisteak5
MailCatcher intercepts outgoing mail and makes it available in a web interface, so you're not supposed to receive it. Instead, you should be able to see it at 127.0.0.1:1080 in your browser. As for Mandrill, I believe you will still need to setup postfix or some other smtp interface on your host machine, if you haven't done so already. This is a fairly common issue, so you should be able to google the particulars or your OS setup. - Zach Kemp

1 Answers