lib/spree/core/mail_settings.rb
# frozen_string_literal: true
module Spree
module Core
class MailSettings
MAIL_AUTH = ['None', 'plain', 'login', 'cram_md5'].freeze
SECURE_CONNECTION_TYPES = ['None', 'SSL', 'TLS'].freeze
# Override the Rails application mail settings based on preferences
def self.init
new.override!
end
def override!
ActionMailer::Base.default_url_options[:host] ||= ENV.fetch("SITE_URL", Config.site_url)
ActionMailer::Base.smtp_settings = mail_server_settings
ActionMailer::Base.perform_deliveries = true
end
private
def mail_server_settings
{
address: Config.mail_host,
domain: Config.mail_domain,
port: Config.mail_port,
authentication:,
enable_starttls_auto: secure_connection?,
user_name: Config.smtp_username.presence,
password: Config.smtp_password.presence,
}
end
def authentication
# "None" is an option in the UI but not a real authentication type.
# We should remove it from our host configurations but I'm keeping
# this check for backwards-compatibility for now.
Config.mail_auth_type.presence unless Config.mail_auth_type == "None"
end
def secure_connection?
Config.secure_connection_type == 'TLS'
end
end
end
end