If you’re using an email plugin that has a hook availability, then you can run a cron job every x minutes/hours to check for any expired entries and send the email.
You’d want a check in place that a previous email has been sent either by custom field or status to avoid sending the author emails over and over again with each cronjob triggered.
This is how I’ve handled this on several previous projects.
Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.