The structure of an MMS message is interesting. When forwarded to an email address through the Orange MMS gateway, messages come through as a single multipart MIME message. These are then decoded by mail applications into attachments. However, the structure is such that it should be relatively easy to parse these messages, and handle various sections appropriately. One key point is that Orange generates a pseudo-email address for the sender which includes the originating mobile number.
So what does this give use? Well, it turns MMS into a delivery channel to web applications, and, more specifically, a means of delivering mobile blogging to Live Journal just by MMSing a specific email address....
The idea is this: a server component that handles incoming mail to a known mailbox, authenticates using the phone number in the header of the mail, determining the target account and then process the mail. Text will be assembled into a standard block, images will extracted and ftped to a known address. This will be used to construct an image location URI which will be appended to the document. Then, using the Live Journal XML-RPC API, and the authentication information stored by the application, a journal entry can be delivered. Once the message has been accepted the original message is destroyed to ensure user privacy.
Authenticating by phone number strikes me as a simple solution for multiple users, as it's a UID, and will be easy enough to parse out of the message headers. Using this approach a single mailbox can be used as the gateway for the application.
I'd be interested in understanding if other networks had MMS systems that worked similarly. If there's anyone reading using any other UK network (O2, Vodaphone and T-Mobile), could you drop me a line to see if you can send me a MMS to my LJ email address.
I know I could invoke the Lazyweb to do this, but I'd like to build it myself. I'm pretty sure it can be componentised to the level of being able to handle the Blogger API and the Meta-Blog API as well as LJ's - so all a user would need to do would be to register their target URI. However, I'm going to stick with LJ to start with - mainly as this is an application I want to use with my shiny new SPV smartphone...
Implementation decisions have been made as follows: I will be developing the gateway in C#, and will be using a POP3 interface to the mail server. All configuration files will be XML. I may implement IMAP as well, but as the application is intended to be portable POP3 seems to be a better initial target - also it's relatively easy to scan a mailbox for known headers and extract using POP3.
Progress has been made - I have most of the postevent component working - just tweaking the final debugging at the moment - which explains the recent flurry of posts you'll find in the community I set up for test messages (mmsbeta).