sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit e7a1cd97651839589b893c4a88a42e0f92dc60ee
parent 83e226c19ce19ec8a1f68d9b3c89892da1cf045e
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Sat,  6 Jan 2007 15:55:30 +0000

fixed login to first try CRAM-MD5 auth, then login auth, then plain login


git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@212 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M lib/sup/imap.rb | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/lib/sup/imap.rb b/lib/sup/imap.rb
@@ -112,7 +112,17 @@ class IMAP < Source
         #raise Net::IMAP::ByeResponseError, "simulated imap failure"
         @imap = Net::IMAP.new host, port, ssl?
         say "Logging in..."
-        @imap.authenticate 'LOGIN', @username, @password
+        begin
+          @imap.authenticate 'CRAM-MD5', @username, @password
+        rescue Net::IMAP::BadResponseError, Net::IMAP::NoResponseError => e
+          say "CRAM-MD5 authentication failed: #{e.class}"
+          begin
+            @imap.authenticate 'LOGIN', @username, @password
+          rescue Net::IMAP::BadResponseError, Net::IMAP::NoResponseError => e
+            say "LOGIN authentication failed: #{e.class}"
+            @imap.login @username, @password
+          end
+        end
         scan_mailbox
         say "Successfully connected to #{@parsed_uri}."
       rescue SocketError, Net::IMAP::Error, SourceError => e
@@ -190,7 +200,7 @@ private
     message =
       case e
       when Exception
-        "Error while #{opts[:while]}: #{e.message.chomp}."
+        "Error while #{opts[:while]}: #{e.message.chomp} (#{e.class.name})."
       when String
         e
       end
@@ -199,7 +209,7 @@ private
 
     self.broken_msg = message
     Redwood::log message
-    BufferManager.flash "Error communicating with IMAP server. See log for details."
+    BufferManager.flash "Error communicating with IMAP server. See log for details." if BufferManager.instantiated?
     raise SourceError, message
   end