Apollo Mail Client Version 0.3

screenshot

screenshot

screenshot

I’m pleased to announce the first alpha release of ApolloMail, a cross-platform POP3 / SMTP e-mail client written in Apollo (obviously) in under 500K (and most of that is my gratuitous about banner). It’s just the beginnings, really, but here is a short feature matrix:

  • Authenticated POP3
  • Authenticated SMTP
  • MIME multipart emails
  • HTML e-mail rendering
  • Image attachments
  • Base64 decoding
  • Quoted-printable decoding

Features that may be added very soon are:

  • Local message store
  • HTML e-mail composing
  • Rich Text rendering
  • Better attachment handling
  • Far more robustness

IMAP and SSL are less likely to be added soon. I would like to also use this as a platform to do something new with email, including several unique views which visualize your e-mail life graphically and in three dimensions. Otherwise it’s just another boring e-mail client.

E-mail has been around since 1971 (that’s ten years longer than me!), and it’s been built upon time and time again. I learned a ton about how e-mail works by building this app. On the other hand, I am sure I haven’t covered every kind of e-mail, POP server, or SMTP server; chances are fairly good you will come across an e-mail that this client doesn’t handle. Don’t panicdon't panic! It’s just an alpha. In addition to mail rendering, the error handling while communicating to the server could be better. If you are experiencing trouble, watch the Activity window. Further, the windowing built into this version of Apollo is a hack, so many Flex components don’t work correctly.

There are a number of interesting technologies in Apollo that this app takes advantage of, which I will be sharing all of in the coming days. First, it leverages my windowing framework which I discussed in a bit of depth before. It logs to a file using the File Logging Target I published earlier. It also uses another simple but awesome technique to implement the activity window — a String logger which exposes its cumulative log messages as a bindable variable — so the activity window is a TextArea bound to a log target which filters only a specific category of logging information (while all logs are saved to disk). It extends an abstract preferences class which makes it a snap to bind to, serialize and deserialize application preferences to disk. And of course, it makes heavy use of binary sockets and regular expressions made possible by Flash Player 9.

I’ll be writing more about the technology involved, and sharing more of the source, in another post or two. For now, grab the Apollo runtime if you need it (link has mandatory registration), and take ApolloMail for a spin! Cheers!

Update: This application is made for the Apollo Alpha. If you have the AIR Beta runtime, it will not work. The next version of ApolloMail will be upgraded for this release of the runtime.

icon ApolloMail (ZIP, 486k, ZIP decompresses to an AIR file, open the AIR file after installing the Apollo Runtime.)

29 Responses to “Apollo Mail Client Version 0.3”

  1. Uses a customized Obsidian theme from scaleNine. Thanks guys!

  2. Deepa Subramaniam says:

    Very nice Roger! How are you planning on adding the local message store?

  3. Well, right now the message store is a singleton with a public bindable (and somewhat large, if the messages are loaded in full) XMLList. For now I plan on writing that out to disk using the same code as the preferences being synchronized to disk. I’ll post real soon on the simple preferences class.

  4. I should note that I wrestled with both the Flex Builder’s AIR export and ADT for about three hours today unsuccessfully trying to get first my icon, then any icon to embed properly in the application. It was entirely unsuccessful: adt returned “null” with no other copy, and the AIR exporter kept insisting that I check that I am exporting to a valid location. I tried embedding just one icon, all the sizes of icon, placing the icon files in different locations and the root, using pngs, gifs, and jpgs, even using the sample icons provided with the Apollo SDK. The only thing that let the packager complete was to not include any icons. This was more than a little frustrating. This was using a freshly downloaded & installed Apollo SDK on OS X 10.4.9 and Flex Builder 2.0.1. I booted into Vista and had a little more luck but the icons didn’t embed properly. Aggravating! So i apologize for the lack of icons.

    Also I probably need to modify my .htaccess so I can define a mime-type for AIR files, because right now linking direcly to an .AIR seems to just print out the contents in ASCII.

  5. Deepa Subramaniam says:

    Forwarding your icon frustrations to an internal QA person. They’ll contact you offline.

  6. hehe. thanks Deepa! It’s good to have friends on “the inside” ;D

  7. p* says:

    This is excellent~!

  8. Juan says:

    Very nice Roger! Regarding the icons, are you talking about the icons for the app? I struggled with this then realized I had to uncomment and I think move/delete some of the default config lines around to get the icons to work. I used FineTune’s packaged config and copied and pasted it into my project, then tweaked what I needed to and it finally worked. I’m not sure why the default didn’t work. Maybe I was just tired :)

  9. [...] ApolloMail ist eine kleine E-Mail Applikation. Zeigt zumindest was mit Apollo alles machbar ist. [...]

  10. Rich Tretola says:

    Roger, check your -app.xml file for an extra <icon/> on the second to last line of the file. This is included by default on some versions of Flex Builder and if you simply go in and uncomment the <icon> <icon/> block you will wind up with 2 sets of the tags and will have issues.

    SORRY PLEASE DELETE THE PREVIOUS 2 COMMENTS

  11. great!!!
    future it will have has supported imap?

  12. @Leonardo:
    Thanks for the comment! I may add IMAP support. However, I recommend against using this as an actual email client, as it is not feature complete and not very efficient. I will be using this as a platform to explore alternate means of visualizing your correspondence, and to explore the limits of the Apollo runtime.

  13. Hi Roger!

    Cool app. If you would like to share it with others you can upload to ApolloHunter.com

    ApolloHunter is a site I recently created to share apollo apps.

    Greetings,
    Alex

  14. Ronald says:

    Hi Roger!

    It’s an interesting email application. Are you using actionscript socket programming to do the sending and receiving email functions ?

    Best Regards
    Ronald

  15. Mark says:

    Interesting have you thought about open sourcing it?

    That way you might get the extra help to get imap and so on….

    Regards

    Mark

  16. blaze says:

    Roger, how do you deal with uploading large files to the email server?

    Do you do bandwidth checks to make sure you’re going fast / slow enough?

  17. @Mark, why? Nobody’s really going to use this as an e-mail client. It’s just a toy.

    @blaze, It only sends plain text emails right now.

    The goal is not to make an email client with feature parity to a commercially available one. The goal is to see what’s possible with Apollo, share some lessons learned along the way, and maybe make a cool prototype of some alternate ways of interacting with data (thus, this part is more likely to be forthcoming than imap support).

  18. Adrian says:

    If you’re thinking of spending any significant effort on this applicaton, you might want to think about changing the name since Apollo Mail already exists – I believe it’s copyright 2003. See http://www.apollomail.com/. It’s not worth the hassle of dealing with lawyers, if you ask me. I worked on the server side of this application, but the company that owns the rights currently is a different one than the one that initially published it.

    Cheers

  19. @Adrian, thanks for the heads-up! I’m not looking to make a cent off this product or even use it for anything other than education. Nor have I invested any time, money or effort into the name. Since it’s clearly not a competing product or impacting the name recognition of the real product, I don’t think there will be any problems. But I do appreciate the warning! Cheers, Roger

  20. Ralph Krausse says:

    When I unzip and try to install it, I get this….

    This application could not be installed or launched (AIR file C:\ApolloMail.air is invalid: This application requires a version of the Adobe Integrated Runtime (AIR) which is no longer supported. Please contact the application author for an updated version.).

  21. @Ralph, this demo was created for the Apollo alpha. The beta version of AIR doesn’t support this package. Maybe it’s time for me to upgrade the app, add in what’s missing, compile it for AIR beta, and open source it… Sounds like a lot of work XD

  22. lav says:

    i got the message this application requires version of AIR which is no longer supported, please contract the author of this application
    What a waste, this if forst application i downloaded after downloading the AIR and look what the message i m getting.

  23. davcom says:

    Well, if it uses non-Apollo specific packages, it should be simple enough to port to MOXIE… Just change the ApolloApplication to WindowedApplication, and then look for the Apollo Specific packages and find their MOXIE equivalent, and that should do it

  24. cool! great job!

    []z from Brazil

  25. Shuan says:

    Any source for this?

    I have build a flex client, but need some more ideas.

    Shaun

  26. Inframan says:

    This thing dead?

    Code anywhere?

  27. Bernard Pineda says:

    Great app!!! Any chance the AIR version will come out soon?

  28. kw says:

    Does really anybody uses Adobe AIR????

Leave a Reply