From 450fc54dbb693972dd7d2cb3cbc33c6f1ceba334 Mon Sep 17 00:00:00 2001 From: Chris Caron Date: Sat, 6 Aug 2022 13:09:35 -0400 Subject: [PATCH] Add global support for port= directive in URL parsing (#639) --- apprise/URLBase.py | 3 +++ test/test_plugin_email.py | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/apprise/URLBase.py b/apprise/URLBase.py index 4b23fcc5..b9407e3c 100644 --- a/apprise/URLBase.py +++ b/apprise/URLBase.py @@ -677,6 +677,9 @@ class URLBase(object): if 'cto' in results['qsd']: results['socket_connect_timeout'] = results['qsd']['cto'] + if 'port' in results['qsd']: + results['port'] = results['qsd']['port'] + return results @staticmethod diff --git a/test/test_plugin_email.py b/test/test_plugin_email.py index 290a5297..d468385d 100644 --- a/test/test_plugin_email.py +++ b/test/test_plugin_email.py @@ -863,3 +863,30 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl): 'mailtos://user:pass123@hotmail.com') obj = Apprise.instantiate(results, suppress_exceptions=False) assert isinstance(obj, plugins.NotifyEmail) is True + + # + # Test Port Over-Riding + # + results = plugins.NotifyEmail.parse_url( + "mailtos://abc:password@xyz.cn:465?" + "smtp=smtp.exmail.qq.com&mode=ssl") + obj = Apprise.instantiate(results, suppress_exceptions=False) + assert isinstance(obj, plugins.NotifyEmail) is True + + # Verify our over-rides are in place + assert obj.smtp_host == 'smtp.exmail.qq.com' + assert obj.port == 465 + assert obj.from_addr == 'abc@xyz.cn' + assert obj.secure_mode == 'ssl' + + results = plugins.NotifyEmail.parse_url( + "mailtos://abc:password@xyz.cn?" + "smtp=smtp.exmail.qq.com&mode=ssl&port=465") + obj = Apprise.instantiate(results, suppress_exceptions=False) + assert isinstance(obj, plugins.NotifyEmail) is True + + # Verify our over-rides are in place + assert obj.smtp_host == 'smtp.exmail.qq.com' + assert obj.port == 465 + assert obj.from_addr == 'abc@xyz.cn' + assert obj.secure_mode == 'ssl'