One option that does not require java is to create a beforecommit microflow that retrieves the same item from the database. You can then compare all attributes one by one. When an attribute has changed you can describe that change in one of your email fields.
I use the same mechanism to create auditlines that check all changes (user-configurable which attributes are relevant) of an object and create auditlines for those.
I would like to have an action that retrieves all changed attributes in one go as well, but I don't think that exists (yet).
Hope this helps.