WordPress Won’t Send Email When a User Register

While not a solution as such, I would suggest you send a couple of test emails to isolate the issue and verify how and where things go wrong. Perhaps your email is actually sent, but rejected by the remote mail server due to missing some headers etc. The code below might help you determine this. Temporarily put it in functions.php. wp_mail will return true on success and false otherwise.

function email_test() {
    $test1 = wp_mail( [email protected], "Test 1", "Just testing" );
    $test2 = wp_mail( [email protected], "Test 2", "Just testing some more" );

    var_dump($test1);
    var_dump($test2);
    var_dump(ini_get('smtp_port'));

    die();
}
add_action('plugins_loaded', 'email_test');

There are a few SMTP related PHP settings which might influence the behavior of mail() and in turn wp_mail(). If you are using shared hosting I would suggest you simply describe the problem to you hosting provider and have them adjust the settings, or hopefully they’ll be able at least to point you in the right direction.

I have also seen some issues with email being sent, but rejected by the remote server due to missing headers. While wp_mail should take care of most of these, adding headers like From, Reply-To, Return-Path, Organization, X-PHP-Script might sometimes help (check out the fourth argument for wp_mail).