So we were offered a job yesterday, which involved developing a mobile app targeting multiple platforms. They need the code to be as cross-platform as possible, so I think that C++ is the way to go as far as the infrastructure is concerned, and then we write wrappers in other C-like languages (like Objective - C++) in order to implement the GUI in each platform.

The application will communicate with an application server which in turn is connected to a database, which is already setup to do mail forwarding. We, as a team, can't make modifications in the way things are working in the server, we can only request for a feature to be implemented.

Their server, as it stands now, is configured to forward mails into the users' registered mails. So, instead of simply forwarding mails to other mail servers to end users, we will have to write something like a native mail client, which will support fetching data, deleting mails from the main server, and pretty much any basic function of a mail client.

The information will be sent and received without using any encryption.

Areas to consider:
-- Multithreading
-- Background tasking (app must be working on the background)
-- Mail reading / fetching data such as images later (don't download images instantly. Do so only at request from the user)
-- Connection to servers.

So, what I am asking is for some guidance in the form of some open source C++ libraries and methods that may be used for the areas I mentioned before. I believe that BSD sockets are the way to go when making connections, but are we obliged to use such primitive functions?

If not possible, I would surely could use any info about iOS specific frameworks that can be used for any of these areas I mentioned.

Any help would be very appreciated.

I don't know much about this subject, but I could suggest, as I often do, to consider Boost libraries. In this case, the multi-threading can be handled by Boost.Thread, and the asynchronous connections can be handled with Boost.Asio (Asynchronous IO library). As far as I know, they should be supported by as many platforms as an open-source library can.