The Retention policy operates in the context of "Sharepoint\system" account - which typically has no email address - and thus fails.
You can set the email address of the System Account - albeit with some difficulty.
The UserInfo table in the WSS_Content database has entries for "SHAREPOINT\system" aka "System Account" - AND a blank entry for the email address - update those SQL table entries to have a correct / valid email address. (Logging in as the "System Account" "Should" let you set an address for "My Settings" via the UserDropdown (top right - My Profile, My Settings) but in my experience it doesn't...)
Another complication I have seen is that the domain account used during installation - is also listed there - i.e. there are TWO entries that need an address (I've seen other failures).
As Dave suggested - Changing the task process to use a valid account known to have an email address will fix the pro NOT use Workflow Context:Initiator - would also address the issue if you provide an Initiator that is known to have an email address...
That's also why it works when you run it manually - "Workflow Context: Initiator" - is you - with a good email address...