Opo Perspective - An ASP.NET Webmail: Part 03

In this post I’ll talk a bit about the architecture of Opo Perspective. I wrote in my first post that this application should be very flexible and extensible. Here are some thoughts about this topic. Most of the ideas presented here are already realized, have a look at the source on CodePlex.

The mail messages’ way

The following graphic illustrates how a mail message makes it’s way from the mail server to the web page (click for larger view).

 PerspectiveMessagePipeline

The MailStore is an external place, where the mail messages are received from. This could be any sort of mail server or, if the mail server is running on the same system for example, a directory with the mail messages.

The MailCache is an internal respository where the messages are saved. Messages displayed in the webmail are retrieved from the MailCache.

This is done through the MailService where also could be dealt with some business logic .

IPerspectivePipeline

There are two places where a PerspectivePipeline comes into play. The first one is intended to filter, tag, delete, … mails that are stored in the MailCache. In the graphic there's a SpamPipilinePlugin, which searches the message's header for such inserted by spam filters and adds a "Spam" tag to the message. This is one example how the pipeline could be used.

The second pipeline is intended to manipulate the message before displaying. One possibility would be to convert links in the text body of the message to html hyperlinks so they can be clicked within the message. Or we could prevent images from beeing shown initially and insert a link at the top of the message that loads the images on demand.

Since all involved classes are based on interfaces it's easy to write your own mail store, mail cache or pipeline plugin.

Because messages in Opo Perspective are based on the same interface (IPerspectiveEntity) like contacts, appointments etc. the same plugins can be used for these as well.


Posted by Dave on 1/2/2009 at 10:46 PM
Tags: , ,
Categories: Opo Perspective | .NET
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Opo Perspective - An ASP.NET Webmail: Part 02

Organizing mail messages

Most mail clients provide a folder structure to organize emails. As GMail came out in 2005, they relied on labels instead of folders. I really like this approach and will do the same thing for Opo Perspective. Only difference: I'll name them tags, not labels. :)

I'm not sure how strictly GMail follows the tag approach, I don't know if spam or deleted mails "only" get a label or if they are moved to another folder or something similar. For Opo Perspective I want to manage all that with tags. Add the tag "Trash" – the message is deleted, add the tag "Inbox" – the message shows up on the home page.

So every new message should get the default tag "Inbox", or if it is junk mail, the tag "Spam".

There is a second possibility to mark a message, a flag. It's only possible to add one flag to a message (like GMail's "starred").

Organizing contacts, appointments, chat messages, …

Because I want Opo Perspective a extensible application there maybe some day things like appointments or chat messages that also must be organized. Therefore all these object should implement the IPerspectiveEntity, which is defined like follows:


Posted by Dave on 1/2/2009 at 9:37 PM
Tags:
Categories: .NET | Opo Perspective
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Opo Perspective on CodePlex

After I released the 0.1 version of Opo.Net (http://www.codeplex.com/OpoNet) I finally started with my original project: Opo Perspective - An ASP.NET MVC Webmail Client. I wrote my first post about this project back in June this year. Yep, that's a long time and I'm very excited that I really made it and published some Perspctive code on CodePlext (http://www.codeplex.com/OpoPerspective).

Posted by Dave on 12/26/2008 at 9:34 PM
Tags: , ,
Categories: .NET | ASP.NET MVC | Opo Perspective
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (1) | Post RSSRSS comment feed

Opo Perspective

Yes, I do hosting as well 

Some years ago I started renting a web server for hosting four or five sites of my customers. I now there is plenty of pros and cons for offer hosting to clients as a web developer, I do it and I'm fine with that. While hosting a website is easy with Windows Server 2003, hosting email services is an other matter. Because I'm only a part time web developer (currently I do one or two project per year), I'm always looking for cheap or - even better - free solutions. Searching the web I finally found MailEnable, which is a really great product and the Standard Edition is free. There's only one downside: MailEnable Standard does not include a webmail client. I know, the professional version is not very expensive, but as I said before, I really don't have the money at the moment.

Free webmail clients for ASP.NET? 

After searching the web for a nice webmail client a few weeks I was a little disappointed. I found only one free product written for ASP.NET: SharpWebMail. I installed it, but had some problems logging in and although it's possibly a solid piece of software I don't like the "XP look and feel". I emphasize standards compliant (X)HTML code and styling with CSS, which is not supported. Also it seems that this project is not maintained anymore.

Though there exist some nice PHP based projects. One of the nicest is RoundCube with it's ajaxified UI. First when I came across that site I was really exited because it looks really great. But then I realized that RoundCube is a IMAP client and MailEnable supports only the POP3 protocoll.

So I went back to Horde (a PHP based application framework) with IMP (the Horde webmail client) which I got pre-installed on a past server in combination with MailEnable Standard. And after some days of trial and error the webmail finnally was up and running. But I'm not really satisfied with this solution and so I decided to develop my own webmail client written in C# using the ASP.NET MVC Framework.

Opo Perspective

First there comes the easy part, finding a name for the project. Opo is always the "prefix" for my projects, Perspective is a synonym for Outlook, so I think this is appropriate for this project. :-)

I'll try to build a flexible webmail client which can also be extended with other modules (calendar, todo lists, ...) and providers (IMAP, HttpMail, local mail folder, ...). I will share my progress with you and I hope you will provide some feedback. As you know I'm not a professional developer and I do programming as a hobby in my spare time. So there are some topics I may need some help.

I'm new to blogging as well, but I thought this could be a interesting project for others too and so I at least have something to blog about. :-) So stay tuned, I'll start writing about Opo Perspective in the next few days.


Posted by Dave on 4/29/2008 at 12:05 AM
Tags: ,
Categories: ASP.NET MVC | Opo Perspective
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (1) | Post RSSRSS comment feed