i'd move the reading of the recipients file completely out of `postRecipients()` (as well as the `APIClient` and pass list of recipients or a stream to read from as parameter.
by doing this we make it easier to reuse the code by the customer (while not really making it more complex) via not tying it directly to the source of the recipients. the customer can then use the very same code and retrieve recipients from e.g. her DB or web service instead of the file. see also `APIClient.addSender()` where we have a similar problem.

while it's clear that this is just an example we should still make it easy for the client to adapt it - so orthogonal design matters. further we might evolve the examples into a proper SDK / language bindings library.