ExQuilla (Microsoft Exchange Server for Thunderbird) beta version released

I am pleased to announce that ExQuilla, a Thunderbird addon that provides access to messages and contacts in Microsoft Exchange Server, is now available. This is a beta-quality release.  ExQuilla is currently only available for Windows, in English, and supports Thunderbird version 9, 10, and 11. Linux and Mac versions are planned for the future.

The most current version of ExQuilla is available from the MesQuilla site here. A slightly older version (due to review delays) is available from Mozilla’s addon site here.

This version supports access to messages and personal contacts from a Microsoft Exchange Server 2007 or 2010 [...]

Share

Address Book accounts

New account types in Javascript for Thunderbird (Part 4)

Now that I am essentially feature complete in adding Address Book features to my Exchange Web Services implementation ExQuilla, I’d like to discuss how SkinkGlue was used to allow this to mostly be done in JavaScript.

As review, SkinkGlue is my attempt to add an interface layer to Thunderbird to allow new account types to be added using javascript. SkinkGlue provides the necessary C++ interfaces to allow standard Thunderbird objects to be created without writing C++ code. SkinkGlue is licensed inder the standard Mozilla licenses, so it could be used by [...]

Share

Exquilla alpha 0.2 released

Today I release alpha version 0.2 of ExQuilla Exchange Web Service. This may be downloaded at the AMO site for the ExQuilla.

This release adds support for most primary email features, but not the EWS address book or calendar. However, this is still Alpha quality code, which means that many of the features have minor glitches.

Major Additions since last release Cross-account message copies and moves Message Filters Junk Processing (though moves of junk messages are not working) Virtual Folders Save message as a file Show message source Message print Improvements in handling of Unicode character sets

Further information is [...]

Share

ExQuilla alpha 0.1 released (Mailnews Exchange Support)

Today I released to Mozilla’s addon site a preview release of my Exchange Web Services extension, which I am calling ExQuilla (see the addons page here to download).

This is alpha quality software, which means it is usable if you are brave. (I have been using it for a month with my rkent@mesquilla.com email account).

There are many, many non-implemented features. Rather than repeat all of that here, I’ll just refer you to the extension description page that I have put up. The most severe restrictions are that this is email only, and there is no attempt to support localization [...]

Share

Towards an Alpha supporting Thunderbird 3.1 (Mailnews Exchange Support)

Things have been a little slower lately, what with summer and family visits and so forth, but my project to support Exchange server in Thunderbird proceeds nevertheless. I’m starting to think seriously of an Alpha release.

Originally I had assummed that there would be changes required in core to support what I am doing. But so far, that has not been absolutely necessary. I had problems earlier with the database code, but I’ve managed to get around that by just using a standard nsMailDatabase object instead of doing my own version.

So I tried to build a version that could [...]

Share

Sending a Message (Mailnews Exchange Support)

I can now send a message through Exchange server from my Thunderbird installation.

Perhaps it would be interesting to show how I hooked into the sending function in the user interface. I asked the usual suspects, and it was not clear to anyone that it could be done without adding backend hooks – which I would like to avoid as much as possible to increase my chances of getting some initial alphas of this released to work with existing TB 3.1 users.

It turned out to be fairly straight forward. In MsgComposeCommands.js there is an observer notification that occurs, called [...]

Share

Data Persistence (Mailnews Exchange Support)

My project to provide Exchange Web Services (EWS) support to applications based on the Mozilla mailnews codebase entered a new phase this week, where I am starting to consider the issue of local persistence of data downloaded from the server. (In the previous week, I got two other things working: display of HTML emails, and updating of UNREAD status from the local app to the server).

EWS messages do not come from the server in RFC-822 format, so it seems like a pity to store them that way, though that is the common method used in the rest of the [...]

Share

Showing the header (Mailnews Exchange Support)

In my last post, I thought it was going to be tricky to get the message header to display in my Thunderbird Exchange Web Services extension. Turned out it wasn’t so hard after all. After I display the body, I just had to pretend like I was the Mime processor, and spit out headers to an nsIMsgHeaderSink that is listening on the message window. The details of what to do are in nsMimeHtmlEmitter.cpp. The result:

Thunderbird dies a horrible death if I click on any of the actions in the header though. Got to [...]

Share

Reading the Body (Mailnews Exchange Support)

Just as a status update, my Exchange Server extension can now read message bodies. But note that there is no header information displayed with the message:

Why no header information? Because the header summary, for reasons that I cannot explain, reads the message file directly – and assumes that the message is in RFC 2822 format. But Exchange Server has already done all of that parsing, and separated the message into its components, including metadata (like subject), body, and attachments.

An important issue going forward for the Mozilla Mailnews (Skink) codebase is, what [...]

Share

Thread pane and nsIMsgDBHdr/nsIMsgDatabase (Mailnews Exchange Support)

Now that I have a state machine to handle situations that need multiple SOAP calls, it was not a big leap forward to hookup the SOAP requests to the mailnews summary database. That’s what gets the messages displayed in Thunderbird’s thread pane.

So here’s a picture to show where I am at. The two messages are real messages that exist on the Exchange server, and have been read by my extension. The message body is not real:

One problem that I had to solve is to make the nsMsgDatabase object extendable. The standard code for [...]

Share