Send email daily using `wp_mail`

I would explore the use of scheduled events in WorPdress, known as wp-cron.

Here is a example for that (not tested, just written here as proof of concept):

// 1.- Register custom escheduled event on plugin activiation
register_activation_hook( __FILE__, 'cyb_plugin_activation' );
function cyb_plugin_activation() {

    if( ! wp_next_scheduled( 'cyb_daily_cron_job' ) ) {

        // Set first run time to today at 12:54 (or tomorrow at that time)
        $first_run_time = new DateTime( '12:54', new DateTimeZone( get_option( 'timezone_string' ) ) );
        $current_time = new DateTime('now', new DateTimeZone( get_option( 'timezone_string' ) ) );

        if( $current_time->getTimestamp() > $first_run_time->getTimestamp() ){

            $first_run_time->modify('+1 day');

        }

        wp_schedule_event( first_run_time->getTimestamp(), 'daily', 'cyb_daily_cron_job' );

    }

}

// 2.- Hook a function to our scheduled event
add_action( 'cyb_daily_cron_job', 'cyb_send_daily_mail' );
function cyb_send_daily_mail() {

    $to = '[email protected]';
    $subject="Post Published by Author";
    $headers="From: admin <[email protected]>" . "\r\n";  
    $message="your";

    wp_mail($to, $subject, $message, $headers);

}

// 3.- Remove custom escheduled event on plugin deactiviation
register_deactivation_hook( __FILE__, 'cyb_plugin_deactivation' );
function cyb_plugin_deactivation() {
    wp_clear_scheduled_hook( 'cyb_daily_cron_job' );
}