Trouble with email delivery

Over the past few days I've been going crazy trying to get email delivery to work using RoR. From what I've read, settings look right, I have no clue what is wrong. I'm hoping the community can give me some insight on how to get this thing running.

All testing is done in development environment on port 3000.

Users must follow the link emailed to them in order to activate an account.

If I set "config.action_mailer.raise_delivery_errors = false" everything appears to work fine, but the email doesn't get sent. (log shows the email was sent to the correct address, activation link works fine). Once set to true I get a refused connection. Bellow is actual code from each email related file, error details at the end.

environment.rb: config.active_record.observers = :user_observer config.action_mailer.delivery_method = :smtp

development.rb: config.action_mailer.raise_delivery_errors = true config.action_mailer.default_charset = "utf-8" config.action_mailer.perform_deliveries = true config.action_mailer.default_content_type = "text/html"

mailsetup.rb: # Load mail configuration if not in test environment if RAILS_ENV != 'test'   email_settings = YAML::load(File.open("#{RAILS_ROOT}/config/ email.yml"))   ActionMailer::Base.smtp_settings = email_settings[RAILS_ENV] unless email_settings[RAILS_ENV].nil? end

email.yml: development:   address: "shawmail.wp.shawcable.net"   port: 25   domain: "shaw.ca"   authentication: :login   user_name: "....@shaw.ca"   password: "secret"

production:   address: "shawmail.wp.shawcable.net"   port: 25   domain: "shaw.ca"   authentication: :login   user_name: "....@shaw.ca"   password: "secret"

test:   address: smtp.gmail.com   port: 587   domain: "gmail.com"   authentication: :login   user_name: ....@gmail.com   password: secret

account_controller.rb :   def signup     @title = "Sign Up"     @user = User.new(params[:user])

    return unless request.post?     @user.btn1 = "Default"     @user.btn2 = "Default"     @user.btn3 = "Default"     @user.save! #<-- this is line 99

    redirect_back_or_default( :action => 'welcome')

    rescue ActiveRecord::RecordInvalid     render :action => 'signup'   end

user_observer.rb: class UserObserver < ActiveRecord::Observer   def after_create(user)     UserNotifier.deliver_signup_notification(user)   end

  def after_save(user)     UserNotifier.deliver_activation(user) if user.recently_activated?   end end

user_notifier: class UserNotifier < ActionMailer::Base   def signup_notification(user)     setup_email(user)     @subject += ' account activation'     @body[:url] = "http://localhost:3000/account/activate/# {user.activation_code}"   end

  def activation(user)     setup_email(user)     @subject += ' '     @body[:url] = "http://localhost:3000/&quot;   end

  protected   def setup_email(user)     @recipients = "#{user.email}"     @from = "admin"     @subject = "Controllers"     @sent_on = Time.now     @body[:user] = user   end end

Error: Errno::ECONNREFUSED (No connection could be made because the target machine actively refused it. - connect(2)):     C:/Ruby/lib/ruby/1.8/net/protocol.rb:206:in `initialize'     C:/Ruby/lib/ruby/1.8/net/protocol.rb:206:in `new'     C:/Ruby/lib/ruby/1.8/net/protocol.rb:206:in `old_open'     C:/Ruby/lib/ruby/1.8/timeout.rb:62:in `timeout'     C:/Ruby/lib/ruby/1.8/timeout.rb:93:in `timeout'     C:/Ruby/lib/ruby/1.8/net/protocol.rb:206:in `old_open'     C:/Ruby/lib/ruby/1.8/net/smtp.rb:392:in `do_start'     C:/Ruby/lib/ruby/1.8/net/smtp.rb:377:in `start'     C:/Ruby/lib/ruby/1.8/net/smtp.rb:315:in `start'     C:/Ruby/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/ action_mailer/base.rb:628:in `perform_delivery_smtp'     C:/Ruby/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/ action_mailer/base.rb:508:in `__send__'     C:/Ruby/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/ action_mailer/base.rb:508:in `deliver!'     C:/Ruby/lib/ruby/gems/1.8/gems/actionmailer-2.1.1/lib/ action_mailer/base.rb:383:in `method_missing'     /app/models/user_observer.rb:3:in `after_create'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/observer.rb:171:in `send'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/observer.rb:171:in `update'     C:/Ruby/lib/ruby/1.8/observer.rb:185:in `notify_observers'     C:/Ruby/lib/ruby/1.8/observer.rb:184:in `each'     C:/Ruby/lib/ruby/1.8/observer.rb:184:in `notify_observers'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/callbacks.rb:309:in `notify'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/callbacks.rb:296:in `callback'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/callbacks.rb:221:in `create_without_timestamps'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/timestamp.rb:29:in `create'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/base.rb:2483:in `create_or_update_without_callbacks'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/callbacks.rb:207:in `create_or_update'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/base.rb:2217:in `save_without_validation!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/validations.rb:921:in `save_without_dirty!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/dirty.rb:83:in `save_without_transactions!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:110:in `save!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/connection_adapters/abstract/database_statements.rb: 66:in `transaction'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:79:in `transaction'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:98:in `transaction'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:110:in `save!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:118:in `rollback_active_record_state!'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/transactions.rb:110:in `save!'     /app/controllers/account_controller.rb:99:in `signup'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/base.rb:1166:in `send'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/base.rb:1166:in `perform_action_without_filters'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/filters.rb:579:in `call_filters'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/filters.rb:572:in `perform_action_without_benchmark'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/benchmarking.rb:68:in `perform_action_without_rescue'     C:/Ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/benchmarking.rb:68:in `perform_action_without_rescue'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/rescue.rb:201:in `perform_action_without_caching'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/caching/sql_cache.rb:13:in `perform_action'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'     C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/ active_record/query_cache.rb:8:in `cache'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/caching/sql_cache.rb:12:in `perform_action'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/base.rb:529:in `send'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/base.rb:529:in `process_without_filters'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/filters.rb:568:in `process_without_session_management_support'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/session_management.rb:130:in `process'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/base.rb:389:in `process'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:149:in `handle_request'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:107:in `dispatch'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:104:in `synchronize'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:104:in `dispatch'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:120:in `dispatch_cgi'     C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/dispatcher.rb:35:in `dispatch'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../ lib/mongrel/rails.rb:76:in `process'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../ lib/mongrel/rails.rb:74:in `synchronize'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../ lib/mongrel/rails.rb:74:in `process'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:159:in `process_client'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:158:in `each'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:158:in `process_client'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:285:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:285:in `initialize'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:285:in `new'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:285:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:268:in `initialize'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:268:in `new'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel.rb:268:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel/configurator.rb:282:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel/configurator.rb:281:in `each'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel/configurator.rb:281:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/ mongrel_rails:128:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/ mongrel/command.rb:212:in `run'     C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/ mongrel_rails:281     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:503:in `load'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:503:in `load'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:355:in `new_constants_in'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:503:in `load'     C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/servers/ mongrel.rb:64     C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'     C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:510:in `require'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:355:in `new_constants_in'     C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/ active_support/dependencies.rb:510:in `require'     C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/server.rb: 39     C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'     C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'     script/server:3

Rendering C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/ action_controller/templates/rescues/layout.erb (internal_server_error)

sounds like the mail server isn't set up to accept connections from your server. Check that you can telnet to port 25 of that server to see if it accepts the connection.

Simon

Hey Simon,

Yes, I am able to telnet into shawmail.wp.shawcable.ca 25.

Thanks for the reply, Marco

then I guess the next step is to make sure the credentials you are using
are ok

@Simon

Hey Simon, Yes, I'm using the correct login info.

@Alpha

Hey Alpha,

All environments now use the same email settings.

I've telnet into shawmail.wp.shawcable.ca 25 and received all positive returns (as per your message).

I don't really have a domain to test so I entered "HELO test.localhost: 3000", (I'm unsure if that's accurate, but still returned a 250)

Thanks for the comments guys, Marco

Over the past few days I've been going crazy trying to get email delivery to work using RoR. From what I've read, settings look right, I have no clue what is wrong. I'm hoping the community can give me some insight on how to get this thing running.

Sounds like your mail setup stuff isn't being run and so actionmailer is defaulting to trying to talk to localhost on port 25

Fred

Issue is now resolved.

This was done by removing the authentication, user_name, and password from the smtp settings.

The following site was of great help with telnet debugging: http://www.yuki-onna.co.uk/email/smtp.html

I'm still unsure of how the mailer is able to send without having to be logged into a valid email account, but it does.

This was the last piece of a small now fully functional project I decided to tackle. As a recent computer programmer graduate I now have something to "showoff" to potential employers.

@Simon Thanks for trying bud.

@Alpha Geez… I can’t begin to describe how frustrating action mailer has been. Your telnet guidance and debugging method was indispensable to my solution. Thank you!

It’s great to see people taking time from their daily life to help fellow programmers. I’ll certainly do my best to contribute to this community.

Sincerely, Marco

@Fred You're probably right. I’d like to point out that I changed all environments to use the same smtp settings.

Thanks, Marco