* @param array $form_data Form data. * @param int $id Notification ID. * * @return array */ public function change_from_name_settings( $args, $form_data, $id ) { // phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName /** This filter is documented in lite/wpforms-lite.php */ $from_name_after = apply_filters( 'wpforms_builder_notifications_from_name_after', '', $form_data, $id ); // phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName if ( ! empty( $from_name_after ) ) { $default = [ 'readonly' => true, 'after' => '
' . $from_name_after . '
', 'input_class' => 'wpforms-disabled', 'class' => 'from-name wpforms-panel-field-warning', ]; } else { $default = [ 'class' => 'from-name', ]; } return wp_parse_args( $args, $default ); } /** * Get warning message. * * @since 1.8.1 * * @return string */ private function get_warning_message() { $site_domain = wp_parse_url( get_bloginfo( 'wpurl' ) )['host']; $email_does_not_match_text = sprintf( /* translators: %1$s - WordPress site domain. */ __( 'The current \'From Email\' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam.', 'wpforms-lite' ), esc_html( $site_domain ) ); $install_wp_mail_smtp_text = ''; // If WP Mail SMTP is not active, show a message to install it. if ( ! is_plugin_active( 'wp-mail-smtp-pro/wp_mail_smtp.php' ) && ! is_plugin_active( 'wp-mail-smtp/wp_mail_smtp.php' ) ) { $install_wp_mail_smtp_text .= sprintf( wp_kses( /* translators: %1$s - WP Mail SMTP install page URL. */ __( 'We strongly recommend that you install the free WP Mail SMTP plugin! The Setup Wizard makes it easy to fix your emails.', 'wpforms-lite' ), [ 'a' => [ 'href' => [], 'target' => [], ], ] ), esc_url( admin_url( 'admin.php?page=wpforms-smtp' ) ) ); } $address_match_text = sprintf( /* translators: %1$s - WordPress site domain. */ __( 'Alternately, try using a From Address that matches your website domain (admin@%1$s).', 'wpforms-lite' ), esc_html( $site_domain ) ); $fix_email_delivery_text = sprintf( wp_kses( /* translators: %1$s - fixing email delivery issues doc URL. */ __( 'Please check out our doc on fixing email delivery issues for more details.', 'wpforms-lite' ), [ 'a' => [ 'href' => [], 'target' => [], 'rel' => [], ], ] ), esc_url( wpforms_utm_link( 'https://wpforms.com/docs/how-to-fix-wordpress-contact-form-not-sending-email-with-smtp/', 'Builder Notifications', 'Delivery Issues Documentation' ) ) ); return sprintf( '

%1$s

%2$s

%3$s

%4$s

', $email_does_not_match_text, $install_wp_mail_smtp_text, $address_match_text, $fix_email_delivery_text ); } /** * Check if the domain name in an email address matches the WordPress site domain. * * @since 1.7.6 * * @param string $email The email address to check against the WordPress site domain. * * @return bool */ private function email_domain_matches_site_domain( $email ) { // Process smart tags if they are used as a value. $email = wpforms_process_smart_tags( $email, [], [], '', 'smtp-notification-validation' ); // Skip processing when email is empty or does not set. // e.g. {field_id="3"} which we don't have at the moment. if ( empty( $email ) ) { return true; } $email_domain = substr( strrchr( $email, '@' ), 1 ); $site_domain = wp_parse_url( get_bloginfo( 'wpurl' ) )['host']; // Check if From email domain ends with site domain. return ! empty( $email_domain ) && preg_match( "/\b{$email_domain}$/", $site_domain ) === 1; } /** * Check if the site has any active SMTP plugins. * * @since 1.7.6 * * @return bool */ private function has_active_smtp_plugin() { // List of plugins from \WPMailSMTP\Conflicts. $smtp_plugin_list = [ 'branda-white-labeling/ultimate-branding.php', 'bws-smtp/bws-smtp.php', 'cimy-swift-smtp/cimy_swift_smtp.php', 'disable-emails/disable-emails.php', 'easy-wp-smtp/easy-wp-smtp.php', 'fluent-smtp/fluent-smtp.php', 'gmail-smtp/main.php', 'mailgun/mailgun.php', 'my-smtp-wp/my-smtp-wp.php', 'post-smtp/postman-smtp.php', 'postman-smtp/postman-smtp.php', 'postmark-approved-wordpress-plugin/postmark.php', 'sar-friendly-smtp/sar-friendly-smtp.php', 'sendgrid-email-delivery-simplified/wpsendgrid.php', 'smtp-mail/index.php', 'smtp-mailer/main.php', 'sparkpost/wordpress-sparkpost.php', 'turbosmtp/turbo-smtp-plugin.php', 'woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php', 'wp-amazon-ses-smtp/wp-amazon-ses.php', 'wp-easy-smtp/wp-easy-smtp.php', 'wp-gmail-smtp/wp-gmail-smtp.php', 'wp-html-mail/wp-html-mail.php', 'wp-mail-bank/wp-mail-bank.php', 'wp-mail-booster/wp-mail-booster.php', 'wp-mail-smtp-mailer/wp-mail-smtp-mailer.php', 'wp-mail-smtp-pro/wp_mail_smtp.php', 'wp-mail-smtp/wp_mail_smtp.php', 'wp-mailgun-smtp/wp-mailgun-smtp.php', 'wp-offload-ses/wp-offload-ses.php', 'wp-sendgrid-smtp/wp-sendgrid-smtp.php', 'wp-ses/wp-ses.php', 'wp-smtp/wp-smtp.php', 'wp-yahoo-smtp/wp-yahoo-smtp.php', ]; foreach ( $smtp_plugin_list as $smtp_plugin ) { if ( is_plugin_active( $smtp_plugin ) ) { return true; } } return false; } }