whoami7 - Manager
:
/
home
/
dataiclx
/
vielorbe.com
/
wp-content
/
plugins
/
suremails
/
inc
/
api
/
Upload File:
files >> //home/dataiclx/vielorbe.com/wp-content/plugins/suremails/inc/api/send-test-email.php
<?php /** * SendTestEmail class * * Handles the REST API endpoint for testing email connection. * * @package SureMails\Inc\API */ namespace SureMails\Inc\API; use Exception; use SureMails\Inc\ConnectionManager; use SureMails\Inc\Settings; use SureMails\Inc\Traits\Instance; use SureMails\Inc\Traits\SendEmail; use WP_REST_Request; use WP_REST_Response; use WP_REST_Server; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Class SendTestEmail * * Handles the `/send-test-email` REST API endpoint. */ class SendTestEmail extends Api_Base { use Instance; use SendEmail; /** * Route base. * * @var string */ protected $rest_base = '/send-test-email'; /** * Register API routes. * * @since 0.0.1 * @return void */ public function register_routes() { register_rest_route( $this->get_api_namespace(), $this->rest_base, [ [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => [ $this, 'handle_send_test_email' ], 'permission_callback' => [ $this, 'validate_permission' ], 'args' => [ 'from_email' => [ 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_email', ], 'to_email' => [ 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_email', ], 'type' => [ 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ], 'id' => [ 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ], ], ], ] ); } /** * Handle sending a test email through the connection. * * @param WP_REST_Request<array<string, mixed>> $request The REST request object. * * @throws Exception Exception. * @return WP_REST_Response The REST API response. */ public function handle_send_test_email( $request ) { try { $params = $request->get_json_params(); $from_email = $params['from_email']; $to_email = $params['to_email']; $id = $params['id']; $options = Settings::instance()->get_settings( 'connections' ); // Find the connection based on the provided details. $connection = $options[ $id ] ?? null; if ( empty( $connection ) ) { return new WP_REST_Response( [ 'success' => false, 'message' => 'Connection not found.', ], 404 ); } $connection_manager = ConnectionManager::instance(); $connection_manager->set_connection( $connection ); $connection_manager->set_is_testing( true ); // Prepare email headers. $headers = [ 'From: ' . $from_email, self::get_html_headers(), ]; $body = $this->get_email_template(); if ( ! $body ) { return new WP_REST_Response( [ 'success' => false, 'message' => 'Failed to get email template.', ], 404 ); } // Translators: %s is the site name. $subject = sprintf( __( 'SureMail: Test Email - %s', 'suremails' ), get_bloginfo( 'name' ) ); // Send the test email. if ( self::send( $to_email, $subject, $body, $headers, [] ) ) { return new WP_REST_Response( [ 'success' => true, 'message' => __( 'Email sent successfully.', 'suremails' ), ], 200 ); } throw new Exception( __( 'Failed to send test email', 'suremails' ) ); } catch ( Exception $e ) { return new WP_REST_Response( [ 'success' => false, 'message' => 'An error occurred: ' . $e->getMessage(), ], 500 ); } } /** * Get Template HTML * * @return string|false * @since 0.0.1 */ private function get_email_template() { // Get site name, current timestamp, and year. $site_name = get_bloginfo( 'name' ); $timestamp = strtotime( current_time( 'mysql' ) ); $current_time = $timestamp ? gmdate( 'Y-m-d h:i:s A', $timestamp ) : 'Invalid timestamp'; $current_year = gmdate( 'Y' ); ob_start(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Test Email</title> </head> <body> <div style="margin-top: 1.5rem; font-size: 0.875rem; color: #111827;"> <div style="margin-left: auto; margin-right: auto; max-width: 32.5rem; background-color: #FFFFFF; padding: 1.5rem;"> <div> <p>Hi there,</p> <p>This is a test email sent to verify your email connection with SureMail. If you're receiving this message, your setup is working correctly!</p> <p>If you have any issues or don't receive this email, please check your settings or contact our support team for assistance.</p> <p>Thank you!</p> <p>Best regards,<br>The SureMail Team</p> </div> <div> <p>This email was sent from <?php echo esc_attr( $site_name ); ?> at <?php echo esc_attr( $current_time ); ?>.</p> <p>© <?php echo esc_attr( $current_year ); ?> SureMail. All rights reserved.</p> </div> </div> </div> </body> </html> <?php return ob_get_clean(); } } // Initialize the SendTestEmail singleton. SendTestEmail::instance();
Copyright ©2021 || Defacer Indonesia