columba 1.4

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Mail Clients » columba 1.4 
Columba
License:Mozilla Public License
URL:http://columba.sourceforge.net/
Description:Columba is an Email Client written in Java
Package NameComment
com.mycom
org.columa.core.config
org.columba.addressbook.config Addressbook configuration files.

See our wiki for a complete reference of all configuration options.

Configuration files can be found in /addressbook. This includes currently options.xml, tree.xml and main_toolbar.xml.

All config-files can be accessed in using AddressbookConfig.get(String) method.

org.columba.addressbook.facade Facade pattern interface providing outside plugins access to subsystems of the addressbook.
org.columba.addressbook.folder Contact and Group folder storage facility
org.columba.addressbook.folder.importfilter Plugin support for importing contacts to Columba.
org.columba.addressbook.folder.virtual
org.columba.addressbook.gui.action Actions for adding/removing and editing contacts.
org.columba.addressbook.gui.autocomplete
org.columba.addressbook.gui.base
org.columba.addressbook.gui.context
org.columba.addressbook.gui.dialog.contact Contact editing dialog
org.columba.addressbook.gui.dialog.group
org.columba.addressbook.gui.dialog.importfilter Contact import wizard
org.columba.addressbook.gui.focus
org.columba.addressbook.gui.frame Addressbook specific enhancements for the core frame
org.columba.addressbook.gui.list
org.columba.addressbook.gui.search
org.columba.addressbook.gui.table Table gui component showing list of contacts and group cards
org.columba.addressbook.gui.table.model
org.columba.addressbook.gui.table.renderer
org.columba.addressbook.gui.tagging
org.columba.addressbook.gui.tree Tree component managing all addressbook folders.
org.columba.addressbook.gui.tree.util Select Addressbook Dialog and diverse helper classes.
org.columba.addressbook.gui.util Helper classes for the addressbook gui.
org.columba.addressbook.main Addressbook component main entrypoint.
org.columba.addressbook.model
org.columba.addressbook.parser Parsers for email address, address lists and vcard
org.columba.addressbook.plugin
org.columba.addressbook.resourceloader
org.columba.addressbook.shutdown Clean up background tasks.
org.columba.addressbook.util General helper classes, including resource loader.
org.columba.api.backgroundtask
org.columba.api.command
org.columba.api.desktop
org.columba.api.exception
org.columba.api.gui
org.columba.api.gui.frame
org.columba.api.gui.frame.event
org.columba.api.plugin
org.columba.api.selection
org.columba.api.shutdown
org.columba.api.statusbar
org.columba.calendar Main entry point for calendar component in Columba framework.
org.columba.calendar.base
org.columba.calendar.base.api
org.columba.calendar.command Provides commands triggered by Swing actions.
org.columba.calendar.config Provides Configuration handling.
org.columba.calendar.config.api
org.columba.calendar.context
org.columba.calendar.facade
org.columba.calendar.model Provides models of calendar data.
org.columba.calendar.model.api
org.columba.calendar.parser
org.columba.calendar.resourceloader
org.columba.calendar.search
org.columba.calendar.store Calendar storage
org.columba.calendar.store.api
org.columba.calendar.ui.action Swing actions shared by menuitems and toolbar buttons.
org.columba.calendar.ui.action.api
org.columba.calendar.ui.base
org.columba.calendar.ui.box
org.columba.calendar.ui.calendar Main calendar component supporting different view modes, including day, week, work week and month.
org.columba.calendar.ui.calendar.api
org.columba.calendar.ui.comp Provides useful controls/widgets
org.columba.calendar.ui.dialog Provides common dialogs.
org.columba.calendar.ui.frame Main frame mediator managing all other components.
org.columba.calendar.ui.frame.api
org.columba.calendar.ui.list Tree providing a hierachy view of all calendars and categories.
org.columba.calendar.ui.list.api
org.columba.calendar.ui.navigation Calendar navigation view.
org.columba.calendar.ui.navigation.api
org.columba.calendar.ui.search
org.columba.calendar.ui.tagging
org.columba.chat
org.columba.chat.base
org.columba.chat.command
org.columba.chat.config
org.columba.chat.config.api
org.columba.chat.conn.api
org.columba.chat.model
org.columba.chat.model.api
org.columba.chat.resourceloader
org.columba.chat.ui.action
org.columba.chat.ui.conversation
org.columba.chat.ui.conversation.api
org.columba.chat.ui.dialog
org.columba.chat.ui.frame
org.columba.chat.ui.frame.api
org.columba.chat.ui.presence
org.columba.chat.ui.presence.api
org.columba.chat.ui.roaster
org.columba.chat.ui.roaster.api
org.columba.contact.gui.box
org.columba.contact.search
org.columba.core.association
org.columba.core.association.api
org.columba.core.associations
org.columba.core.backgroundtask Background tasks management
org.columba.core.base
org.columba.core.charset Character encoding handling. See Supported Encodings.
org.columba.core.command Scheduler/Dispatcher for a multi-threaded application.

Columba uses the CommandReference pattern. Where {@link Command} instances are decoupled from their References ({@link DefaultCommandReference}). Actions ({@link FrameAction}) start Commands and pass the appropriate Reference to them.

This is Preclaiming Scheduler implementation. Meaning tasks get queued until all resources they need are free at once. Which is no problem, because for example a "copy message from folder a to folder b" operation needs only two resources: folder a and folder b.

The org.columba.core.command.Command class has two methods. Execute() is for time consuming background tasks, updateGUI() is called after the execute-method is finished (the thread is finished). The nice thing about updateGUI() is that is called in the awt-event dispatcher thread. It is therefore thread-safe, and can be used to update the gui.

Note, that execute() has {@link Worker} in its signature, which has a couple of methods to display a text in the {@link Statusbar}, or updating the progressbar.

Worker registers at the {@link Taskmanager}, which is basically the model for {@link Statusbar}. We use an easy listener pattern to register all the workers.

This makes it easy for commands to send status updates.

Then we have actions in org.columba.core.action. These provide the glue between the gui-elements and the commands. An action initializes a command and passes it along to the Processor (task scheduler {@link DefaultProcessor}) to execute.

You can find many examples in the packages ending with "action" and "command". Adapting, this schema should be pretty easy for developers.

org.columba.core.component
org.columba.core.component.api
org.columba.core.config XML-based configuration management. All config files are registered at {@link Config}.

{@link MailConfig} and {@link AddressbookConfig} are just helper classes which register their configuration files at {@link Config}. This can be seen in the configuration directory structure of the user's configuration directory. Where mail and addressbook have their own folders for storing preferences.

Example on how to get a {@link XmlElement}xml treenode:

  
  XmlElement gui = MainInterface.config.get("options").getElement("/options/gui");
  

This would address the file options.xml . Following a little example on how this file would look like:

  
   <?xml version="1.0" encoding="UTF-8"?>
    <options>
     <gui enabled="true">
      .. your options here
     </gui>
    </options>
   
  
org.columba.core.connectionstate
org.columba.core.context
org.columba.core.context.api
org.columba.core.context.base
org.columba.core.context.base.api
org.columba.core.context.semantic
org.columba.core.context.semantic.api
org.columba.core.desktop
org.columba.core.facade Interfaces for external plugins wanting to access Columba's internal subcomponents.

Using the Facade pattern.

org.columba.core.filemonitor
org.columba.core.filter
org.columba.core.folder
org.columba.core.folder.api
org.columba.core.gui.action Actions all components of Columba share.
org.columba.core.gui.base
org.columba.core.gui.config General Options Dialog for changing global options.

This includes language, toolbar style, Look and Feel, font settings, etc.

org.columba.core.gui.context
org.columba.core.gui.dialog
org.columba.core.gui.docking
org.columba.core.gui.docking.event
org.columba.core.gui.exception
org.columba.core.gui.externaltools Configuration dialog and wizard for external application integration.
org.columba.core.gui.frame Model-View-Controller based frame package. All components use this package to which creates a simple frame with basic menu, toolbar and statusbar. Mail and addressbook plug themselves in this frame and provide customized functionality. It would be a good idea to provide a framework, which distinguishs multiview from singleview frames. Depending on what you like you could just extend the correct class.
org.columba.core.gui.frame.api
org.columba.core.gui.globalactions
org.columba.core.gui.htmlviewer
org.columba.core.gui.htmlviewer.api
org.columba.core.gui.logdisplay
org.columba.core.gui.menu Swing Menus get generated using customizable XML configuration files

org.columba.core.action.menu.xml defines the core menu, mail and addressbook define their own menu.xml, which extend the core menu.

We therefore added placeholders we called extensionpoint, which are used by mail/addressbook to address the location where they plug themselves in the core menu.

Note, that the swing menu code is kept separated from the code which actually creates the menu - the generator classes.

{@link MenuPluginHandler} is responsible to handle all the plugins.

org.columba.core.gui.plugin Plugin Management dialog for adding, removing and configuring plugins.
org.columba.core.gui.profiles
org.columba.core.gui.scripting
org.columba.core.gui.search
org.columba.core.gui.search.api
org.columba.core.gui.statusbar Swing based statusbar component used by all frames.
org.columba.core.gui.tagging
org.columba.core.gui.themes Look and Feel plugin entrypoint
org.columba.core.gui.themes.plugin Look and Feel default plugins shipped with Columba.
org.columba.core.gui.toolbar Swing based Toolbar component used by all frames

The toolbar is created, by using the toolbar.xml file and the actions classes already used to create the menus. As with the menus mail/addressbook just extend the toolbar.

org.columba.core.gui.trayicon
org.columba.core.gui.util Miscellanious swing additions
org.columba.core.help Online help framework using JavaHelp.

Adding context-specific help to a button

 HelpManager.enableHelpOnButton(helpButton, "configuring_columba");
This associates the help button (JButton) with the topic ID.

Looking up topic ID

See the file jhelpmap.jhm, which associates topic IDs with html files. All files can be found in package lib/usermanual.jar.

I've used a very general schema to generate topic IDs. Following a couple of examples, so you don't need to lookup every single topic ID:

  • index -> index (index.html)
  • introduction -> introduction (ch01.html)
  • installation -> installing (ch02.html)
  • installation_1 -> installating-windows (ch02.html)
  • installation_2 -> installating-linux (ch02_2.html)
  • installation_3 -> installating-generic (ch02_3.html)
  • using_columba_composing_new_email_messages_2 -> composing new email messages (ch04s03.html)
Note that subsections are numbered where sections have names. The last examples is a very interesting one: "using_columba" -> section "composing_new_email_messages" ->first subsection "2" ->second subsection Hope you get the idea!
org.columba.core.htmleditor.api
org.columba.core.htmlviewer
org.columba.core.io File and Directory Input/Output utilities
org.columba.core.logging Looging facility using log4j from http://www.apache.org.

Note, that we are most probably replacing log4j with the java.util.logging package already shipped with jdk1.4

org.columba.core.main Main program entrypoint for Columba.
org.columba.core.plugin Plugin Framework

The extensibility system provides a framework for both, providing extensibility hooks, and for extending the functionality of Columba.

A plugin is a bundle of extensions. An extension provides an implementation of a specific functionality.

The {@link IPluginManager} manages all plugins as a singleton registry. Additionally, it is also a registry for all available extension handlers. {@link IExtensionHandler} is a registry for extensions. It resembles an extension point or hook to extend Columba's functionality. {@IExtension} provides the metadata, describing an extensions. Additionally, it is responsible for instanciating an extension. Every extension must implement the interface {@link IExtensionInterface}.

When looking at {@link IExtensionHandler}, its obvious that it simply resembles a registry for classes. All extensions have a unique id and the classname. The extension handler keeps a hashtable of all extensions and uses a custom classloader to instanciate extensions.

All extension handlers use xml files which can be found in /res directory. This is merely an easy way to specify extensions easily, without hardcoding them in Java. A list of all extension points for the core package can be found in: org.columba.core.plugin.pluginhandler.xml. All core extension handler files can be found in org.columba.core.plugin.

This is an example extension handler file:



 
 

Usually, when making use of extensions in Columba, you first get an instance of the plugin manager using PluginManager.getInstance(). Then you have to retrieve an appropriate extension handler getHandler(id). Using this handler, you get the extension using IExtensionHandler.getExtension(id). Now, you instanciate the plugin using IExtension.instanciate().

org.columba.core.print Printing text and html documents.
org.columba.core.resourceloader
org.columba.core.scripting
org.columba.core.scripting.config
org.columba.core.scripting.extensions
org.columba.core.scripting.interpreter
org.columba.core.scripting.model
org.columba.core.scripting.service
org.columba.core.scripting.service.api
org.columba.core.search
org.columba.core.search.api
org.columba.core.selection Selection management handlers which build an additional layer on top of the swing framework.
org.columba.core.shutdown Shutdown manager handles the cleanup when exiting Columba.
org.columba.core.tagging
org.columba.core.tagging.api
org.columba.core.url.http
org.columba.core.util Miscellanious stuff
org.columba.core.versioninfo
org.columba.core.xml Very simple sax-based XML configuration backend. A more complete example on using the backend:
// use a path-like navigation to get the interesting option
// first part is getting the file "options.xml" from the "mail" directory (MailOptions)
// we also have the same for addressbook -> AddressbookOptions
// second part address the xml-treenode "/options/gui/html"
XmlElement preferHtml = MailConfig.get("options").getElement("/options/gui/html");

// register as observer
preferHtml.addObserver(this);

// example of getting a property
String enableHtml = preferHtml.getAttribute("enable"); 
org.columba.mail
org.columba.mail.attachment.handler.example
org.columba.mail.command Provides {@link Command} and {@link CommandReference} classes for email purposes.
org.columba.mail.composer Creating email messages as specified by RFC 2822 (obsoletes RFC 822). This includes building a message for a client program to work with the mail datastructures as defined in org.columba.mail.message and renderering it as clear text to allow later sending.
org.columba.mail.config Configuration files and wrapper classes.
org.columba.mail.connector
org.columba.mail.facade Provides access to Columba's email functionality for plugins.
org.columba.mail.filter Datastructures for email filtering, filter action handling and searching.
org.columba.mail.filter.plugins Provides filter and filter action plugins built-in Columba.
org.columba.mail.folder Provides all abstract classes for a folder-orentiented datastorage.

Every folder class subclasses {@link FolderTreeNode}, which is basically only a mutable treenode, which uses the tree.xml configuration file as {@link TreeModel}.

Unlike {@link FolderTreeNode} which doesn't contain messages, {@link Folder} should be subclasses by every mailbox.

{@link LocalFolder} is used by all local folders and builds a plugin-like approach to make it easy to add new mailbox formats in the futue.

{@link FolderFactory} follows the factory pattern in providing methods to create new folders.

org.columba.mail.folder.command Provides commands for accessing the mailbox stores.

Folder shouldn't be accessed directly. Instead we use {@link FolderCommand}, which in conjunction with {@link FolderCommandReference} provide a looking facility. This makes sure that only one {@link Command} at a time can modify the folder's data.

As explained in org.columba.command, {@link DefaultProcessor} is a preclaiming schedular. FolderCommandReference keeps a list of folders involved in the operation the Command executes. DefaultProcessor will only start the Command if all folders (resources) can be claimed at once.

org.columba.mail.folder.event
org.columba.mail.folder.headercache Adds additional caching functionality for local and remote folders.
org.columba.mail.folder.imap Implementation of a IMAP folder.
org.columba.mail.folder.mailboximport Provides a mailbox import facility including a plugin extension point.
org.columba.mail.folder.mbox
org.columba.mail.folder.mh Implementation of a MH-based mailbox format.
org.columba.mail.folder.outbox Implementation of an Outbox folder which keeps messages in a queue for sending them later.
org.columba.mail.folder.search Provides searching functionality for folders.

{@link DefaultSearchEngine} is using filter plugins to perform search requests.

Every {@link QueryEngine} implementation supports a subset of search requests, for example searching in the body or subject of a message.

{@link DefaultSearchEngine} is also the fall-back for every search request which is not performed by implementations of {@link QueryEngine}.

We use composition to plug the {@link QueryEngine} in the {@link DefaultSearchEngine}, using a {@link DummyQueryEngine} which doesn't support any special search requests, as default.

org.columba.mail.folder.temp Implementation of a temporary in-memory folder.
org.columba.mail.folder.virtual Implementation of a virtual folder.
org.columba.mail.folder.zippedmh
org.columba.mail.folderoptions Configuration options, which can be assigned on a per-folder basis, or globally.

This includes, which columns to show in the message-list. The sorting order, filter properties, enabling/disabling of the threaded-view, etc.

org.columba.mail.gui.action Global actions for the mail component.
org.columba.mail.gui.attachment
org.columba.mail.gui.charset Charset menu for switching the character encoding of the currenlty viewed message.
org.columba.mail.gui.composer Composer Window to write new messages.
org.columba.mail.gui.composer.action Provides actions used in the composer window.
org.columba.mail.gui.composer.command Provides commands used in the composer.
org.columba.mail.gui.composer.contact
org.columba.mail.gui.composer.html Adds HTML editing capability to the composer:
org.columba.mail.gui.composer.html.action HTML-editing specific actions.
org.columba.mail.gui.composer.text Abstract texteditor classes used by the text/plain and the text/html editor kits.
org.columba.mail.gui.composer.util Helper classes including dialogs, renderers and other ui components.
org.columba.mail.gui.config.account Account Configuration Dialog
org.columba.mail.gui.config.accountlist Account Preferences Dialog showing a list of accounts
org.columba.mail.gui.config.accountwizard Wizard for creating new accounts
org.columba.mail.gui.config.columns
org.columba.mail.gui.config.export Dialog for exporting emails to a single mbox file.
org.columba.mail.gui.config.filter Dialogs for editing filters associated to folders.
org.columba.mail.gui.config.filter.plugins Plugin enabled filters and filter actions.
org.columba.mail.gui.config.filter.util Helper classes like renderers, etc. for the filter dialogs
org.columba.mail.gui.config.folder Folder Options Dialog showing status information and providing support for exporting messages to a single mbox file.
org.columba.mail.gui.config.general Mail Options Dialog for changing the mail configuration
org.columba.mail.gui.config.mailboximport Wizard for importing mailbox files in different formats.
org.columba.mail.gui.config.search Search Messages Dialog
org.columba.mail.gui.config.subscribe
org.columba.mail.gui.config.template Dialog for choosing template messages from your template folder, used by the Reply with Template action
org.columba.mail.gui.contact.list
org.columba.mail.gui.context
org.columba.mail.gui.filtertoolbar
org.columba.mail.gui.frame Provides mail-centric additions to the core frame
org.columba.mail.gui.frame.util Helper classes
org.columba.mail.gui.message GUI component for viewing message bodytext and header information.
org.columba.mail.gui.message.action Actions for message viewer
org.columba.mail.gui.message.command Commands for message viewer.
org.columba.mail.gui.message.filter Preprocessing filters modifying the message contents before the message gets displayed in the message viewer.

In Columba we never change the message contents, is always saved in the mailbox as it is. But decryption of messages makes it necessary to modify the original message. Therefore a temporary folder is used where the modified message is saved. All references are re-mapped to this temporary folder. This makes it possible to execute all actions on this message as if it would be the original.

org.columba.mail.gui.message.util Helper classes used by the message viewer
org.columba.mail.gui.message.viewer Contents viewer for the message viewer component. This includes a header viewer, a message body viewer, an attachment viewer and a security information viewer.
org.columba.mail.gui.messageframe Mail window showing only the message. There's no tree or message list in this frame.
org.columba.mail.gui.search
org.columba.mail.gui.table Table component responsible for displaying the message list.

org.columba.mail.gui.table.action Provides actions for the message list.
org.columba.mail.gui.table.command Commands used by the table viewer
org.columba.mail.gui.table.model Model for the table controller
org.columba.mail.gui.table.plugins Plugin-enabled column renderers for the table view.
org.columba.mail.gui.table.selection Provides selection handling for the table component.

Follow these steps if you want to listen to table selection changes:

  • Listener should implement SelectionListener
  • This also means overwriting public void selectionChanged(SelectionChangedEvent e)
  • Don't forget to cast SelectionChangedEvent to TableSelectionChangedEvent
@see org.columba.mail.gui.table.action
org.columba.mail.gui.tagging
org.columba.mail.gui.tree Tree component managing mail folders
org.columba.mail.gui.tree.action Provides actions used by the tree component
org.columba.mail.gui.tree.command Provides commands for the tree component
org.columba.mail.gui.tree.comparator Classes to sort the tree view with.
org.columba.mail.gui.tree.selection Provides selection handling for the tree component.

Follow these steps if you want to listen to tree selection changes:

  • Listener should implement SelectionListener
  • This also means overwriting public void selectionChanged(SelectionChangedEvent e)
  • Don't forget to cast SelectionChangedEvent to TreeSelectionChangedEvent
@see org.columba.mail.gui.tree.action
org.columba.mail.gui.tree.util Helper classes used in the tree component including dialogs, renderers, etc.
org.columba.mail.gui.util Helper classes used by the mail component, including password dialog, Date chooser dialogs, etc.
org.columba.mail.imap Low-level IMAP implementation as specified by RFC 3501 (obsolete RFC 2060)
org.columba.mail.mailchecking
org.columba.mail.main Main entrypoint for the mail component
org.columba.mail.message Data structures handling email data processing as specified in RFC 2822 (obsolete RFC 822)
org.columba.mail.nativ.defaultmailclient
org.columba.mail.parser Parsers handling email data processing as specified in RFC 2822 (obsolete RFC 822)
org.columba.mail.parser.text Parsers dealing with the modification of text/html contents
org.columba.mail.pgp GnuPG support for signing/verifying/encryption/decryption of messages based on the OpenPGP standard
org.columba.mail.plugin
org.columba.mail.pop3 POP3 management classes
org.columba.mail.pop3.command Provides commands.
org.columba.mail.resourceloader
org.columba.mail.search
org.columba.mail.shutdown Background clean up tasks
org.columba.mail.smtp High-level SMTP management
org.columba.mail.smtp.action Provides SMTP actions
org.columba.mail.smtp.command Provides SMTP commands
org.columba.mail.spam Tightly integrated Spam Filter using Macchiato library.

Users enables spam filter on a per-account basis in the account options dialog. {@link SpamItem} keeps all options.

Several commands where modified to plug the spam filter into Columba, without adding additional actions. The user only has to mark messages as spam or not spam to train the spam filter. Additionally to {@link MarkMessageCommand}, {@link AddPOP3MessageCommand} was modified to score new messages downloaded from POP3 servers.

Spam token database is saved in /mail/spam.db.

org.columba.mail.spam.command
org.columba.mail.spam.rules Enhancing the spam filter with handcrafted rules improves the detection of spam messages. This is especially important in the beginning of the training process, where the token database is empty.
org.columba.mail.spam.spamassassin
org.columba.mail.spellcheck Spellchecking support using aspellas backend.
org.columba.mail.spellcheck.cswilly Implementation of the aspell-based backend.
org.columba.mail.url.cid
org.columba.mail.util Miscellanious stuff for email specific stuff.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.