Issue 120: SMTP with no authentication should set ActionMailer setting to nil instead of :none
Status:  New
Owner: ----
Reported by afiedl...@gmail.com, Aug 20, 2008
What steps will reproduce the problem?
Try to use the setting for no authentication on SMTP in the Preferences
page (SMTP Authentication Type: none). Emails will not send and
ActionMailer will give an error like:

ArgumentError: wrong auth type none
	from /usr/lib/ruby/1.8/net/smtp.rb:566:in `check_auth_args'

What is the expected output? What do you see instead?
Emails should send with no ActionMailer errors when SMTP is set to have no
authentication.

What version of the product are you using? On what operating system?
1.0.a3 on Ubuntu Hardy (8.04). Rails 2.0.2.


Please provide any additional information below.

According to this post: http://www.ruby-forum.com/topic/106218 ,
ActionMailer::Base.smtp_settings[:authentication] should be set to nil, not
:none when using SMTP with no authentication. I've changed the relevant
section in app/models/preference.rb to this which seems to work for me:

    if mail_auth_type != 'none'
      mail_server_settings[:authentication] = mail_auth_type.to_sym
      mail_server_settings[:user_name] = find_by_name('mail_username').value
      mail_server_settings[:password] = find_by_name('mail_password').value
    else
     mail_server_settings[:authentication] = nil
    end
    ActionMailer::Base.smtp_settings = mail_server_settings




 
Aug 21, 2008
#1 edmundo...@gmail.com
I cannot reproduce this, configured my own Postfix server to not have authentication
available and testing using the :none type sends the message.

More info:

Server output:
edmundo@toshibau305:~$ telnet 192.168.0.6 25
Trying 192.168.0.6...
Connected to 192.168.0.6.
Escape character is '^]'.
220 internetgw.intranet.minharede.lan ESMTP Postfix (Debian/GNU)
ehlo localhost
250-internetgw.intranet.minharede.lan
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250 8BITMIME
...


Test used:

  def test_receipt_not_using_authentication
    ActionMailer::Base.delivery_method = :smtp

    prefs = {
      "mail_host" => "192.168.0.6",
      "mail_port" => "25",
      "mail_auth_type" => "none",
      "mail_username" => "usuario1@minharede.lan"
    }

    assert Preference.save_settings(prefs)
    assert Preference.init_mail_settings

    an_order_user = order_users(:santa)
    assert an_order_user.update_attributes(:email_address => 'usuario2@minharede.lan')

    # Get any order.
    an_order = orders(:santa_next_christmas_order)
    
    an_order.deliver_receipt
  end


Aug 21, 2008
#2 edmundo...@gmail.com
obs.: Tested on trunk, commenting out the requirement of the smtp_tls unit in the
preference model.