isMail(); $mailer->CharSet = 'UTF-8'; $mailer->setFrom( $from, $name, false ); foreach ( (array) $request['to'] as $address ) { $mailer->addAddress( (string) $address ); } foreach ( isset( $request['cc'] ) ? (array) $request['cc'] : array() as $address ) { $mailer->addCC( (string) $address ); } foreach ( isset( $request['bcc'] ) ? (array) $request['bcc'] : array() as $address ) { $mailer->addBCC( (string) $address ); } if ( ! empty( $meta['reply_to'] ) ) { $mailer->addReplyTo( (string) $meta['reply_to'] ); } elseif ( ! empty( $request['reply_to'] ) ) { $mailer->addReplyTo( (string) $request['reply_to'] ); } $mailer->Subject = isset( $request['subject'] ) ? (string) $request['subject'] : ''; if ( ! empty( $request['html'] ) ) { $mailer->isHTML( true ); $mailer->Body = (string) $request['html']; $mailer->AltBody = isset( $request['message'] ) ? (string) $request['message'] : ''; } else { $mailer->ContentType = 'text/plain'; $mailer->Body = isset( $request['message'] ) ? (string) $request['message'] : ''; } foreach ( isset( $request['attachments'] ) ? (array) $request['attachments'] : array() as $attachment ) { $bytes = base64_decode( (string) $attachment['content'], true ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Attachment content is stored base64-encoded. if ( false !== $bytes ) { $mailer->addStringAttachment( $bytes, (string) $attachment['filename'], 'base64', (string) $attachment['content_type'] ); } } /** This action is documented in wp-includes/pluggable.php */ do_action_ref_array( 'phpmailer_init', array( &$mailer ) ); $mailer->send(); return true; } catch ( \PHPMailer\PHPMailer\Exception $e ) { return new \WP_Error( 'fallback_failed', $e->getMessage() ); } catch ( \Exception $e ) { return new \WP_Error( 'fallback_failed', $e->getMessage() ); } } }