"The password reset email never arrives" is one of the most common support tickets in any item that sends mail. Almost always the sending worked and the receiving did not.
Do not send directly from the web server
Shared hosting IP addresses have terrible reputations, earned by everyone else on them. Support proper SMTP settings and, better, an API from a mail provider, and let the buyer configure it. Default to it in the documentation.
The from address must be a domain they control
Sending as the customer's own address so replies work is the most common cause of mail being rejected outright. Send from the site's domain, and set reply-to for the customer's address.
Tell them about the three DNS records
SPF, DKIM and DMARC decide whether mail is trusted. Your item cannot set them and your buyer probably does not know they exist. A short section in your docs explaining what to add prevents more tickets than any code you could write.
Send a plain text part
HTML-only messages score worse with spam filters and are unreadable in some clients. Include both, always.
Log the outcome
Record that the message was accepted for delivery, with a timestamp. When a buyer says nothing arrived, that line tells you instantly whether the problem is yours or theirs.
Give them a test button
One button in settings that sends a test message and shows the actual error on failure. It converts a support conversation into something the buyer solves alone.