[Name, Leser der Absenderdaten aus den Optionen des Plugins]. */ private static function bekannte(): array { return [ 'wp-mail-smtp' => ['WP Mail SMTP', static function (): array { $o = (array) get_option('wp_mail_smtp', []); return [(string) ($o['mail']['from_email'] ?? ''), (string) ($o['mail']['from_name'] ?? '')]; }], 'fluent-smtp' => ['FluentSMTP', static function (): array { $o = (array) get_option('fluentmail-settings', []); $standard = (string) ($o['misc']['default_connection'] ?? ''); $verbindungen = (array) ($o['connections'] ?? []); $v = $verbindungen[$standard] ?? (reset($verbindungen) ?: []); $p = (array) ($v['provider_settings'] ?? []); return [(string) ($p['sender_email'] ?? ''), (string) ($p['sender_name'] ?? '')]; }], 'post-smtp' => ['Post SMTP', static function (): array { $o = (array) get_option('postman_options', []); return [(string) ($o['sender_email'] ?? ''), (string) ($o['sender_name'] ?? '')]; }], 'easy-wp-smtp' => ['Easy WP SMTP', static function (): array { $o = (array) get_option('easy_wp_smtp', []); if (!empty($o['mail']['from_email'])) { return [(string) $o['mail']['from_email'], (string) ($o['mail']['from_name'] ?? '')]; } $alt = (array) get_option('swpsmtp_options', []); return [(string) ($alt['from_email_field'] ?? ''), (string) ($alt['from_name_field'] ?? '')]; }], ]; } /** @return array{name: string, datei: string, email: string, absender_name: string, verifiziert: bool}|null aktives SMTP-Plugin */ public static function erkennen(): ?array { $bekannte = self::bekannte(); foreach ((array) get_option('active_plugins', []) as $datei) { $ordner = strtok((string) $datei, '/'); if (!isset($bekannte[$ordner])) { continue; } [$name, $leser] = $bekannte[$ordner]; [$email, $absenderName] = $leser(); $email = strtolower(sanitize_email($email)); $verifiziert = Api::verifizierteDomains(); $domain = substr((string) strrchr($email, '@'), 1); return ['name' => $name, 'datei' => (string) $datei, 'email' => is_email($email) ? $email : '', 'absender_name' => sanitize_text_field($absenderName), 'verifiziert' => $domain !== '' && $verifiziert !== null && in_array($domain, $verifiziert, true)]; } return null; } /** @return array{0: string, 1: string} Typ und Meldung */ public static function ausfuehren(): array { if (!current_user_can('activate_plugins')) { return ['error', __('Permission denied.', 'purehost-send-mails')]; } $p = self::erkennen(); if ($p === null) { return ['error', __('No other SMTP plugin found.', 'purehost-send-mails')]; } if (!Einstellungen::smtpBereit()) { return ['error', __('Set up the SMTP login first.', 'purehost-send-mails')]; } $neu = []; if ($p['email'] !== '' && $p['verifiziert'] && (string) Einstellungen::wert('absender_email') === '') { $neu['absender_email'] = $p['email']; } if ($p['absender_name'] !== '' && (string) Einstellungen::wert('absender_name') === '') { $neu['absender_name'] = mb_substr($p['absender_name'], 0, 100); } if ((string) ($neu['absender_email'] ?? Einstellungen::wert('absender_email')) === '') { /* translators: %s: email address */ return ['error', $p['email'] !== '' ? sprintf(__('The sender %s does not belong to a domain verified at send-mails.de. Choose a sender first.', 'purehost-send-mails'), $p['email']) : __('Choose a sender first.', 'purehost-send-mails')]; } require_once ABSPATH . 'wp-admin/includes/plugin.php'; deactivate_plugins($p['datei']); $neu['aktiv'] = true; Einstellungen::speichern($neu); /* translators: %s: plugin name */ return ['success', sprintf(__('%s is deactivated (its settings are kept), sender taken over, sending via send-mails.de is on. Send a test email to check.', 'purehost-send-mails'), $p['name'])]; } }