dispatchEvent

Roger Braunstein + Mims Wright = this blog


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.)

25 Comments »

RSS feed for comments on this post. TrackBack URI

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

    Comment by Roger Braunstein — April 26, 2007 #

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

    Comment by Deepa Subramaniam — April 26, 2007 #

  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.

    Comment by Roger Braunstein — April 26, 2007 #

  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.

    Comment by Roger Braunstein — April 26, 2007 #

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

    Comment by Deepa Subramaniam — April 26, 2007 #

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

    Comment by Roger Braunstein — April 26, 2007 #

  7. This is excellent~!

    Comment by p* — April 27, 2007 #

  8. 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 :)

    Comment by Juan — April 27, 2007 #

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

    Pingback by ApolloMail Client at flash und so — April 27, 2007 #

  10. 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

    Comment by Rich Tretola — April 27, 2007 #

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

    Comment by Leonardo França — April 27, 2007 #

  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.

    Comment by Roger Braunstein — April 27, 2007 #

  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

    Comment by Alexander Marktl — April 28, 2007 #

  14. 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

    Comment by Ronald — May 1, 2007 #

  15. @Ronald, Yep!

    Comment by Roger Braunstein — May 1, 2007 #

  16. Interesting have you thought about open sourcing it?

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

    Regards

    Mark

    Comment by Mark — May 10, 2007 #

  17. 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?

    Comment by blaze — May 14, 2007 #

  18. @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).

    Comment by Roger Braunstein — May 16, 2007 #

  19. 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

    Comment by Adrian — May 29, 2007 #

  20. @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

    Comment by Roger Braunstein — May 30, 2007 #

  21. 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.).

    Comment by Ralph Krausse — June 22, 2007 #

  22. @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

    Comment by Roger Braunstein — June 22, 2007 #

  23. 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.

    Comment by lav — June 30, 2007 #

  24. 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

    Comment by davcom — July 19, 2007 #

  25. cool! great job!

    []z from Brazil

    Comment by Daniel Oliveira — November 7, 2007 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>