You will only get bounce emails if the email domain is correct, but the address is invalid. A lot depends on the receiving smtp server and how it handles bounced emails.
Storing in the database is the only way to capture all outgoing emails. A lot of times there is no way of knowing if an email is actually delivered, so there is no way to identify undelivered emails.