From cfefa8df902f55c6c12f66a451c2c274a2d9c22b Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Sun, 30 Aug 2026 14:56:22 +0700 Subject: [PATCH 1/2] Make SMTP capability queries case-insensitive --- lib/net/smtp.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb index cca06e6..d750ef3 100644 --- a/lib/net/smtp.rb +++ b/lib/net/smtp.rb @@ -300,7 +300,8 @@ def capable_starttls? # true if the EHLO response contains +key+. def capable?(key) return nil unless @capabilities - @capabilities[key] ? true : false + return true if @capabilities[key] + @capabilities.each_key.any? { |capability| capability&.casecmp?(key.to_s) } end # The server capabilities by EHLO response From 887f04c65eb52e7d7b1f843948ea5e54cf48d7a0 Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Sun, 30 Aug 2026 18:53:10 +0700 Subject: [PATCH 2/2] Avoid repeated capability query coercion --- lib/net/smtp.rb | 3 ++- test/net/smtp/test_smtp.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb index d750ef3..8567da5 100644 --- a/lib/net/smtp.rb +++ b/lib/net/smtp.rb @@ -301,7 +301,8 @@ def capable_starttls? def capable?(key) return nil unless @capabilities return true if @capabilities[key] - @capabilities.each_key.any? { |capability| capability&.casecmp?(key.to_s) } + key = key.to_s + @capabilities.each_key.any? { |capability| capability&.casecmp?(key) } end # The server capabilities by EHLO response diff --git a/test/net/smtp/test_smtp.rb b/test/net/smtp/test_smtp.rb index 3b9e245..80d339d 100644 --- a/test/net/smtp/test_smtp.rb +++ b/test/net/smtp/test_smtp.rb @@ -51,6 +51,7 @@ def test_server_capabilities smtp = Net::SMTP.start('localhost', port, starttls: false) assert_equal({"STARTTLS"=>[], "AUTH"=>["PLAIN"]}, smtp.capabilities) assert_equal(true, smtp.capable?('STARTTLS')) + assert_equal(true, smtp.capable?('starttls')) assert_equal(false, smtp.capable?('DOES-NOT-EXIST')) else port = fake_server_start