Send email once every 12 months to a particular user [closed]

Set update_user_meta() for a WP_User if get_user_meta() ends up empty.

Update a key with a future date for the next year:

$startDate=date('Y-m-d');
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );

Schedule an event in one year with wp_schedule_event() or use 'daily' to check all users for a relative year date.

// WP_User_Query arguments
$args = array (
    'meta_query'     => array(
        array(
            'key'       => 'future_email_date',
            'value'     => date('Y-m-d'),
            'compare'   => '<=',
            'type'      => 'DATETIME',
        ),
    ),
);

// The User Query
$user_query = new WP_User_Query( $args );

When you find a match, use wp_mail() to send your email.

error code: 523