+
+ // Prepare normalized/hookable representation of the mail settings.
+ $mailSettings = $dao->toArray();
+ $mailSettings['protocol'] = $protocols[$mailSettings['protocol']] ?? NULL;
+ $protocolDefaults = self::getProtocolDefaults($mailSettings['protocol']);
+ $mailSettings = array_merge($protocolDefaults, $mailSettings);
+
+ CRM_Utils_Hook::alterMailStore($mailSettings);
+
+ if (!empty($mailSettings['factory'])) {
+ return call_user_func($mailSettings['factory'], $mailSettings);