If you are experiencing issues with emails not being received by the end user, it is highly unlikely that emails are not being generated. But being sent and/or received is quite different than being generated. Once the plugin generates an email, the wp_mail() function will attempt to send it.
A lot of things can happen after that so just because it was handed off by wp_mail(), that does not equate to being “sent.” If you are on shared hosting, you are likely at the mercy of an email queue with the several hundred other accounts also on your shared server. There is usually no way for you to track an email once it is generated and sent to the queue when you are on shared hosting.
Also, let me emphasize that just because your WP site successfully sends one type of email (such as a new registration or password reset), that does not mean ALL emails will make it through the process. Your sending host (and the receiver) will evaluate every email that goes out to check whether it meets their rules.
It is recommended that you configure WordPress to send email through an SMTP account. This will give you a much more robust process because you will be sending email through an actual account on an email server instead of relying on your webserver. You will be able to track emails and they will have a higher probability of being sent/received. This recommendation is based on my many years as both a WordPress developer AND running my own WP sites. (I also happen to have been one of the component maintainers of the Mail Component in WordPress Core.)
In my option, the best method to send using SMTP is to set up your account details and credentials as part of your wp-config.php file. I have an article on how to do that as well as some example code you can use on Github. If you cannot do this, or are uncomfortable applying this kind of customization, there are a lot of plugins available to run wp_mail() through SMTP. I recommend WP Mail SMTP. It has been around a long time, and has a good track record of success.
If you cannot use SMTP, you will need to understand something about how emails sent via web scripts work. Unless you are running your own hardware, your host will likely require that you be sending email from an actual email address. WordPress will by default send from email@example.com. It is possible that if this is not an actual address on your account, your host may not allow this.
Even if your host does allow email aliases, the receiver may choose to reject it even before it gets to any spam filter on your specific account.
For best results, send using an actual address. WP-Members has a setting for you to set the “from” address and “from name” in the email settings. Use an actual address using a domain that matches your site domain.
Similar to the above, some hosts and receivers require that an email have proper headers. WordPress does not apply “from” addresses in the email header by default. WP-Members has a filter for the emails that it sends so you can add a “from” address to the header.
Another trick that helps make your email look less like spam and more like a legitimate email is to make sure the “from” address is the same as the “send” address so that the return path is the same as the address the message is coming from.
For more information on wp_mail(), how to troubleshoot, and how to set up SMTP, please see this post on my personal blog.
Subscribers to the support site have access to the Send Test Emails extension for the plugin which will allow you to send tests of each of the plugin’s emails. Get this extension from the downloads area.