Thanks Ryan. Turns out the answer is no, it's not happening consistently! I just set up a test record and tried it and it's now working fine. I had the user try it and it worked fine. Let's put that one down to a little gremlin that has gone away.
However, they are now reporting that if one of the container fields is empty that they get an error, despite the code above trying to say if the field is not empty then attach the contents else do nothing. Is there a different way of handling this in one script step? All this does happen in one Set Variable step, from EmailConnectSMTP through Create, Set Body, AttachFile (x3 as above), Send and Disconnect. Do I need to trim the result or anything?
Thanks