Introduction
E = m c² is a utility that can check various sources for messages, then filter
and redistribute them.
A typical example is checking your mailbox and showing you a popup window if there
are new messages, but it goes far beyond that since it's fully extensible using
plugins. For example, you can check RSS files for new blog posts, monitor when a
server comes online or goes offline, play a soundfile when new messages arrive,
send a summary email, run a program, write to an RSS file, ...
Basically, you can make E = m c² do all you can think of! And it can do your
laundry too (Pro version only)!

Features
Runtime
- Fully extensible using plugins.
- Settings are saved to an xml file so you can easily edit and copy it.
- Certain settings can be encrypted if needed by plugins (e.g. passwords).
- Runs in the background, it's basically just an icon in the system notification area.
- Easy to install, set up and remove (if you could live without it).
Plugins
- Check POP3 and IMAP email.
- Check Outlook Web Access (OWA) and Outlook Mobile Access (OMA) email.
- Check RSS 2.0 feeds.
- Monitor the file system, i.e. get notified when directories or files change.
- Monitor the network, i.e. get notified when the network or IP address changes.
- Monitor server status (by ping or by checking a url).
- Filter messages by content.
- Write new messages to a text file or an RSS 2.0 feed.
- Show a desktop alert, a message box or a rich message viewer when messages arrive.
- Run a program, change the desktop background, play a sound or send an email when
messages arrive.
- ...And you can easily write your own!
Concepts
Runtime
The E = m c² runtime is the heart of the application. It basically does nothing
else than drive the available plugins and allow you to configure them.
Plugins
Plugins come in five kinds: Triggers, Sources, Filters, Publishers and Hosted Plugins.
Triggers
will initiate a message cycle. Sources will then check a certain source
for new messages, which will be handed over to available Filters so unwanted
items can be removed. Afterwards, the remaining messages will be sent to Publishers
so they can publish them to some destination.
Hosted Plugins are a simpler kind of plugin that do not participate in the message cycle
described above, but can still have their own settings and commands and will be loaded into
E = m c² like the other types of plugins. This can be convenient for small pieces of
functionality that would otherwise require a standalone application. Now they can just run inside
the E = m c² host.
Channels (Advanced)
After a Trigger, the system will collect all messages from all enabled Sources,
then send these through Filters to finally reach Publishers. The exact flow of these
messages is defined by distribution channels. If you do not explicitly define channels,
the messages will be sent through all enabled Filters to all enabled Publishers.
If you do define distribution channels then you can specify the exact paths which
the messages will follow.
Profiles (Advanced)
You can group different configurations in "Profiles", which are collections of plugins
that are activated together. Adding profiles can help you configure different scenarios
(e.g. during the day versus at night). The context menu in the system notification
area allows you to quickly switch to another profile.
Getting Started
Installation
Before this application can be used, the .NET Framework Version 2.0 must be installed.
It is available for free at Microsoft's download page for the .NET Framework. The application
can be installed by executing the installer or by just copying it to a destination
directory of your choice. Uninstalling can be done through the Windows control panel
or (if you simply copied it) is just a matter of deleting the files again - there
are no registry settings or other external items that are modified by the application.
E = m c² Overview
After installation, you can then run the application and configure the plugins you
want to run (e.g. to check your mailbox and show a popup window when new mails arrive)
in the Settings page. The screenshot below shows the overall layout of the application
with the following sections:
- Section 1: Actions. Contains application-wide actions and all actions that
can be executed for the current view (depends on the selection in the Main Menu).
- Section 2: Main Menu. Contains links to switch the current view between the
E = m c² Configuration, the runtime Status, the application Options
and the About screen.
- Section 3: Quick Links. Contains links to the most common actions: to save
all settings, control the runtime, and exit the application.
- Section 4: Current View. Contains the user interface for the currently selected
view in the Main Menu, e.g. to edit the configuration. Most of the time,
additional help information is provided at the bottom of the screen.
Adding Plugins
All you need to do to add a third-party plugin is to drop it into the program's
folder (even while the program is running!) and it will automatically become available
in the settings page. You can then create different instances of the plugin (e.g.
to check multiple mailboxes) and configure their settings.
Developing Plugins
The program is written in .NET so all you need is any .NET compiler to create your
own plugin classes. The only assembly you will need to reference is called "JelleDruyts.Emc.Common.dll",
in which you will find the necessary base classes to inherit from. Please look at
the developer documentation (help file) for more information on the available classes
and how to use them to create your own plugins.
What's New?
v2.1 (December 28, 2007)
- Added support for trigger plugins to provide a list of messages of their own when
they trigger. This allows non-pull scenarios to be supported as well (i.e. not only
receiving messages by "pulling" Source plugins, but "pushing" to deliver messages
from within a trigger immediately).
- Added support for "hosted" plugins, which don't actively participate in the message
cycle but are just running in the context of E = m c². This means they don't handle
messages but they can still have their own settings and commands. This can be convenient
to host small pieces of functionality with settings that would otherwise require a
standalone application.
- Duplicated the "Change Background" as a separate "hosted" plugin so you can also
use it as is, outside of the message cycle.
- The "Change Background" plugins now support other background styles than just "stretch".
The new StretchedWithAspectRatio option retains the aspect ratio of the original
image while stretching it to fit the screen.
- Added "Yahoo! Mail" plugin that retrieves messages from Yahoo! Mail (but you need
to make sure that your account is still using the "classic" user interface for this
to work).
- Added "Network Changed" trigger, which triggers when the network changes (e.g. when
you plug in or out of a network).
- Added "Debug" publisher, which writes messages to the Windows debug stream.
- The "Viewer" can now have message styles to color rows depending on certain message
properties, e.g. the source of a message or its subject.
- The "Viewer" can now be configured to have an initial window state, e.g. to make
it start as maximized.
- The template processor can now also use reflected properties, so not just the built-in
tokens as before - e.g. $(Sender) - but also tokens that are taken from the value
of a property on the (optionally subclassed) message at runtime. This provides better
templating support for messages that are subclassed from the base EmcMessage class.
- The "RSS Source" plugin now attempts to remember the read items between sessions
of the application.
- The "RSS Publisher" plugin now also writes the message recipients to the RSS feed
so that a client also has access to the original message recipients.
v2.0 (April 15, 2007)
- Completely rewrote the application, which means there may be breaking changes from
the previous version. However, mostly the same functionality - and lots of extra
features - should be available.
- Added a Web host, which allows you to deploy the E = m c² runtime onto a Web
server.
- Added support for templates, which allows plugin settings to use tokens that are
replaced with fields from messages (e.g. $(Sender) gets replaced by the message
sender).
- Added "Popup", "Desktop Alert", "Outlook Web Access", "Outlook Mobile Access" and
"Change Background" plugins.
v1.3 (October 11, 2005)
- Added checkbox "Add to all distribution channels" next to "Add Plugin" button so
you can opt out of the default behaviour.
- Fixed bug where plugins weren't disposed when new settings were applied.
- Made the plugin properties panel show categories.
- Made sure the Filters treenode in the settings screen is now always in between the
Publishers and Subscribers nodes.
- System notification area icon is now gray when the application is disabled.
- Added Categories to the plugin settings.
- Content Filter now works in Block or Pass mode and can be made case sensitive.
- Renamed "Ping" source to "Server Status" because it now also supports checking an
url to see if a certain server is online.
- Added XslFileName to RSS Feed publisher.
v1.2 (May 31, 2003)
- Added Distribution Channels.
- Settings are now serialized without version information.
- Updated the system notification area icon: when there are errors, it shows a white
exclamation mark on a red background (as before) but when the last message cycle
didn't cause any errors it becomes a red exclamation mark on a white background.
- Messages are not distributed in a separate thread for each Subscriber anymore, a
complete message cycle happens in only one worker thread.
- Fixed bug where messages were checked when applying new settings while the application
was not enabled.
- Plugin properties window now shows the default value in the right-click popup menu
to reset the value.
- Added "Run Program", "Ping" and "Send Email" plugins.
- Fixed bug where RSS Feed source wasn't reset properly after initialization.
- Various enhancements to the Viewer publisher.
v1.1 (May 16, 2003)
- Added Profiles.
- Fixed "major" bug (thanks Doggi, how could I have missed this?): Einstein's formula
is 'E = m c²' with a lowercase 'c'!
- Fixed minor bug where the status screen didn't always show the right time messages
would be checked next.
- About screen is fancier :-)
- Merged all plugins into one assembly.
- Email source now supports top x lines of the email body.
- RSS Feed source now supports secured websites with a username and password.
v1.0 (May 2, 2003)
License
© 2003-2007, Jelle Druyts
This software is licensed as freeware.
Copyright (c) 2003-2007, Jelle Druyts (http://jelle.druyts.net/)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
(1) Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
(2) Redistributions in binary form must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
(3) The name of Jelle Druyts may not be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|