DEV: Add service to validate email settings (#13021)

We have a few places in the code where we need to validate various email related settings, and will have another soon with the improved group email settings UI. This PR introduces a class which can validate POP3, IMAP, and SMTP credentials and also provide a friendly error message for issues if they must be presented to an end user.

This PR does not change any existing code to use the new service. I have added a TODO to change POP3 validation and the email test rake task to use the new validator post-release.
This commit is contained in:
Martin Brennan
2021-05-13 15:11:23 +10:00
committed by GitHub
parent bbb4469811
commit 3d2cace94f
5 changed files with 439 additions and 0 deletions

View File

@ -33,6 +33,16 @@ class POP3PollingEnabledSettingValidator
private
def authentication_works?
# TODO (martin, post-2.7 release) Change to use EmailSettingsValidator
# EmailSettingsValidator.validate_pop3(
# host: SiteSetting.pop3_polling_host,
# port: SiteSetting.pop3_polling_port,
# ssl: SiteSetting.pop3_polling_ssl,
# username: SiteSetting.pop3_polling_username,
# password: SiteSetting.pop3_polling_password,
# openssl_verify: SiteSetting.pop3_polling_openssl_verify
# )
@authentication_works ||= begin
pop3 = Net::POP3.new(SiteSetting.pop3_polling_host, SiteSetting.pop3_polling_port)
pop3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) if SiteSetting.pop3_polling_ssl