It was pretty clear after testing with the RPi that it was going to be a lot of work to get it into a state that worked robustly and was user friendly for non-technical people. So the next version I decided to move to an ESP-32, which used a lot less power, handled shutdowns much better, and could have much simpler code. I also decided to get my own website to serve the images, moving away from the email solution. I still like the email option, but I haven't worked out a good way to implement it yet.
This just used the esp32 dev board and didn't have a battery, but it was all I needed to work out the code on both the esp32 and the server. Originally I had the images just sitting in a public folder, which anyone could access if they worked out the (easily guessable) URL, but now they are served through a php script which requires a key specific to the "frame" making the request. The server has a database with the details and settings of the different frames (i have multiple running at once), which means some can have different resolutions, colour depths, update times and so on.
The frame itself was just a picture frame I bought from a supermarket, so looked passable from the front but of course a mess on the inside.