As a follow up from my previous post, I have had some more ideas about this mail client/server. I think I would write this using C# and as the server is in no way graphical is completely cross-platform. The server side actually has a very simple task. For now, I am assuming it is only dealing with mail.

If the server ran C#, then a simple System.Net.Sockets.TcpListener class would sort out the server aspect of it. The only real thing that has to be thought out is how to store the main, and in what format… I’d definately send out XML to clients, and with C#, that too would be terrifically easy! So there are really only a few things to be decided about the server:

  • The format of storage for permanent mail. This is important as it needs to be able to deal with binary data as well as easy ascii. An advantage of IMAP is that certain parts of an email can be retrieved based on its MIME type- this would be a good idea to implement.
  • The XML schema used when sending mail and sending folder structure to clients.
  • When to send mail, and how. If it was sent with every folder change, then it could be sluggish to use. However, if it was completely sent at startup it might take an age to startup. Only sending headers would work fine, but then you couldn’t preview the message when browsing the folders.

Note: the word send in this context means transferring data from server to client. I’m not dealing with sending e-mails yet! Although, I expect sending emails would be pretty easy, just send some XML from the client to server and send it through some kind of MTA.

Retrieving the mail would also be a bit of an issue- how? rely on an existing mail server or what? This is completely undecided and does not need to be thought of until mail storage (the main point of this project) is sorted.

If that worked, then the other things what would be great are:

  • a calendar - This would be fairly easy to implement. Again I’d need to think of a way to store the data, and how to send the data to the client, but it doesn’t have the problems of mail- of having to actually access the outside world!
  • tasks - This would be even easier and has the same plus/minus points as a calendar.
  • plugins - I have SynCE in mind. By the time this leaves the ground, there will probably be some kind of sync support for Windows Mobile 5 devices and a plugin for that would be great- I’ve no idea how hard that would be to implement, but it would be terrifically useful.

But I think the most important part of this whole project is the name…

Leave a Reply