<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.    
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Apr 17, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Team list</title>
    <style type="text/css" media="all">
      @import url("./css/james.css");
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
      @import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
      @import url("./js/jquery/css/print.css");
      @import url("./js/fancybox/jquery.fancybox-1.3.4.css");
    </style>
    <script type="text/javascript" src="./js/jquery/js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
    <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20120417" />
    <meta http-equiv="Content-Language" content="en" />
                                                    
<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/>
                      
          <!-- Google Analytics -->
    <script type="text/javascript">
    
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-1384591-1']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
      })();

    </script>
    </head>
  <body class="composite">
    <div id="banner">
                                      <a href="../" id="bannerLeft" title="james-mime4j-logo.gif">
              
                                                                            
        <img src="images/logos/james-mime4j-logo.gif" alt="JAMES Mime4J" />
                </a>
                              <a href="http://www.apache.org/index.html" id="bannerRight">
              
                                        
        <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software Foundation" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-04-17</span>
                      </div>
            <div class="xright">                    <a href="../index.html" title="Home">Home</a>
            |
                        <a href="../server/index.html" title="Server">Server</a>
            |
                        <a href="../hupa/index.html" title="Hupa">Hupa</a>
            |
                        <a href="../protocols/index.html" title="Protocols">Protocols</a>
            |
                        <a href="../imap/index.html" title="IMAP">IMAP</a>
            |
                        <a href="../mailet/index.html" title="Mailets">Mailets</a>
            |
                        <a href="../mailbox/index.html" title="Mailbox">Mailbox</a>
            |
                        <a href="index.html" title="Mime4J">Mime4J</a>
            |
                        <a href="../jsieve/index.html" title="jSieve">jSieve</a>
            |
                        <a href="../jspf/index.html" title="jSPF">jSPF</a>
            |
                        <a href="../jdkim/index.html" title="jDKIM">jDKIM</a>
            |
                        <a href="../mpt/index.html" title="MPT">MPT</a>
            |
                        <a href="../postage/index.html" title="Postage">Postage</a>
              
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                
                                <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="index.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="status.html" title="Status">Status</a>
            </li>
                  <li class="none">
                          <a href="samples.html" title="Example">Example</a>
            </li>
                  <li class="none">
                          <a href="usage.html" title="Usage">Usage</a>
            </li>
          </ul>
                       <h5>Developers Corner</h5>
                  <ul>
                  <li class="none">
                          <a href="start/download.html" title="Download">Download</a>
            </li>
                  <li class="none">
                          <a href="start/build.html" title="Build">Build</a>
            </li>
          </ul>
                       <h5>References</h5>
                  <ul>
                  <li class="none">
                          <a href="apidocs/index.html" title="Javadoc">Javadoc</a>
            </li>
                  <li class="none">
                          <a href="http://issues.apache.org/jira/browse/MIME4J/" title="Issue Tracker">Issue Tracker</a>
            </li>
          </ul>
                       <h5>Related Projects</h5>
                  <ul>
                  <li class="none">
                          <a href="http://hc.apache.org/httpcomponents-client/httpmime/index.html" title="httpmime">httpmime</a>
            </li>
          </ul>
                       <h5>About James</h5>
                  <ul>
                  <li class="none">
                          <a href="../index.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../newsarchive.html" title="News">News</a>
            </li>
                  <li class="none">
                          <a href="../mail.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../contribute.html" title="Contributing">Contributing</a>
            </li>
                  <li class="none">
                          <a href="../guidelines.html" title="Guidelines">Guidelines</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/james" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../team-list.html" title="Who We Are">Who We Are</a>
            </li>
                  <li class="none">
                          <a href="../license.html" title="License">License</a>
            </li>
          </ul>
                       <h5>Download</h5>
                  <ul>
                  <li class="none">
                          <a href="../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/" title=""></a>
            </li>
          </ul>
        <h5>Apache Software Foundation</h5>
  <ul>
    <li>
      <strong>
        <a title="ASF" href="http://www.apache.org/">ASF</a>
      </strong>
    </li>
    <li>
      <a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
    </li>
    <li>
      <a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
    </li>
    <li>
      <a title="License" href="http://www.apache.org/licenses/" >License</a>
    </li>
    <li>
      <a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
    </li>
    <li>
      <a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
    </li>
    <li>
      <a title="Security" href="http://www.apache.org/security/">Security</a>
    </li>
  </ul>
                       <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                   
                
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>The Team<a name="The_Team"></a></h2><a name="The_Team"></a><p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p><p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><div class="section"><h3>Members<a name="Members"></a></h3><a name="Members"></a><p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p><table border="0" class="bodyTable"><tr class="a"><th>Id</th><th>Name</th><th>Email</th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th></tr><tr class="b"><td><a name="bago"></a>bago</td><td>Stefano Bagnara</td><td><a class="externalLink" href="mailto:bago@apache.org">bago@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>2</td><td><span id="developer-0">2</span></td><td>-</td></tr><tr class="a"><td><a name="norman"></a>norman</td><td>Norman Maurer</td><td><a class="externalLink" href="mailto:norman@apache.org">norman@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Chair</td><td>2</td><td><span id="developer-1">2</span></td><td>-</td></tr><tr class="b"><td><a name="serge"></a>serge</td><td>Serge Knystautas</td><td><a class="externalLink" href="mailto:sergek@lokitech.com">sergek@lokitech.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-2">-</span></td><td>Donator=Serge was the original donator of the James code, which has since been massively
                    improved by people smarter than him. He tries to answer questions on the listserv and make
                    code
                    contributions when he does get a rare bit of free time.</td></tr><tr class="a"><td><a name="benrdf"></a>benrdf</td><td>Bernd Fondermann</td><td><a class="externalLink" href="mailto:bf_jak@brainlounge.de">bf_jak@brainlounge.de</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-3">-</span></td><td>-</td></tr><tr class="b"><td><a name="sbrewin"></a>sbrewin</td><td>Steve Brewin</td><td><a class="externalLink" href="mailto:sbrewin@synsys.com">sbrewin@synsys.com</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-4">-</span></td><td>-</td></tr><tr class="a"><td><a name="hilmer"></a>hilmer</td><td>S&#xf8;ren Hilmer</td><td><a class="externalLink" href="mailto:sh@widetrail.dk">sh@widetrail.dk</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-5">-</span></td><td>-</td></tr><tr class="b"><td><a name="noel"></a>noel</td><td>Noel J. Bergman</td><td><a class="externalLink" href="mailto:noel@devtech.com">noel@devtech.com</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-6">-</span></td><td>-</td></tr><tr class="a"><td><a name="danny"></a>danny</td><td>Danny Angus</td><td><a class="externalLink" href="mailto:danny@apache.org">danny@apache.org</a></td><td>Student Loans Company ltd</td><td><a class="externalLink" href="http://www.slc.co.uk">http://www.slc.co.uk</a></td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-7">-</span></td><td>Description=Danny is a member of the Apache Software Foundation and married father
                    of two by night, and by day works as lead technical consultant for the Student Loans
                    Company ltd.</td></tr><tr class="b"><td><a name="adc"></a>adc</td><td>Alan D. Cabrera</td><td><a class="externalLink" href="mailto:list@toolazydogs.com">list@toolazydogs.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-8</td><td><span id="developer-8">-8</span></td><td>-</td></tr><tr class="a"><td><a name="hbedi"></a>hbedi</td><td>Harmeet Bedi</td><td><a class="externalLink" href="mailto:harmeet@kodemuse.com">harmeet@kodemuse.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-9">-</span></td><td>-</td></tr><tr class="b"><td><a name="jasonw"></a>jasonw</td><td>Jason Webb</td><td><a class="externalLink" href="mailto:jw@inovem.com">jw@inovem.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-10">-</span></td><td>-</td></tr><tr class="a"><td><a name="vincenzo"></a>vincenzo</td><td>Vincenzo Gianferrari Pini</td><td><a class="externalLink" href="mailto:vincenzo.gianferraripini@praxis.it">vincenzo.gianferraripini@praxis.it</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-11">-</span></td><td>-</td></tr><tr class="b"><td><a name="rdonkin"></a>rdonkin</td><td>Robert Burrell Donkin</td><td><a class="externalLink" href="mailto:rdonkin@apache.org">rdonkin@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-12">-</span></td><td>-</td></tr><tr class="a"><td><a name="niklas"></a>niklas</td><td>Niklas Therning</td><td><a class="externalLink" href="mailto:niklas@apache.org">niklas@apache.org</a></td><td>Trillian AB</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-13">-</span></td><td>-</td></tr><tr class="b"><td><a name="jcheng"></a>jcheng</td><td>Joe Cheng</td><td><a class="externalLink" href="mailto:joe@joecheng.com">joe@joecheng.com</a></td><td>-</td><td>-</td><td>-</td><td>-</td><td><span id="developer-14">-</span></td><td>Description=Former author to the mime4j product</td></tr><tr class="a"><td><a name="mwiederkehr"></a>mwiederkehr</td><td>Markus Wiederkehr</td><td><a class="externalLink" href="mailto:mwiederkehr@apache.org">mwiederkehr@apache.org</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-15">-</span></td><td>-</td></tr><tr class="b"><td><a name="olegk"></a>olegk</td><td>Oleg Kalnichevski</td><td><a class="externalLink" href="mailto:olegk@apache.org">olegk@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-16">-</span></td><td>-</td></tr><tr class="a"><td><a name="manolo"></a>manolo</td><td>Manuel Carrasco Monino</td><td><a class="externalLink" href="mailto:manolo@apache.org">manolo@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-17">-</span></td><td>-</td></tr><tr class="b"><td><a name="eric"></a>eric</td><td>Eric Charles</td><td><a class="externalLink" href="mailto:eric@apache.org">eric@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-18">-</span></td><td>-</td></tr><tr class="a"><td><a name="felixk"></a>felixk</td><td>Felix Knecht</td><td><a class="externalLink" href="mailto:felixk@apache.org">felixk@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>1</td><td><span id="developer-19">1</span></td><td>-</td></tr><tr class="b"><td><a name="ieugen"></a>ieugen</td><td>Ioan Eugen Stan</td><td><a class="externalLink" href="mailto:ieugen@apache.org">ieugen@apache.org</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-20">-</span></td><td>-</td></tr></table></div><div class="section"><h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a><p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p><table border="0" class="bodyTable"><tr class="a"><th>Name</th><th>Email</th><th>Properties</th></tr><tr class="b"><td>Rob Oxspring</td><td>-</td><td>Contribution=Contributed to the mime4j product</td></tr><tr class="a"><td>Roger Fullerton</td><td>-</td><td>Contribution=Wrote spfjava, the first spf implementation in java</td></tr><tr class="b"><td>Alan D. Cabrera [ADC]</td><td><a class="externalLink" href="mailto:list@toolazydogs.com">list@toolazydogs.com</a></td><td>-</td></tr><tr class="a"><td>Darrell DeBoer (DD)</td><td>-</td><td>-</td></tr><tr class="b"><td>Stephen J. McConnell (SJM)</td><td><a class="externalLink" href="mailto:mcconnell@apache.org">mcconnell@apache.org</a></td><td>-</td></tr><tr class="a"><td>Peter M. Goldstein (PG)</td><td><a class="externalLink" href="mailto:farsight@alum.mit.edu">farsight@alum.mit.edu</a></td><td>-</td></tr><tr class="b"><td>Pete Donald (PD)</td><td>-</td><td>-</td></tr><tr class="a"><td>Charles Benett (CB)</td><td><a class="externalLink" href="mailto:charles@benett1.demon.co.uk">charles@benett1.demon.co.uk</a></td><td>-</td></tr><tr class="b"><td>Federico Barbieri (FB)</td><td><a class="externalLink" href="mailto:scoobie@systemy.it">scoobie@systemy.it</a></td><td>-</td></tr><tr class="a"><td>Stuart Roebuck (SR)</td><td><a class="externalLink" href="mailto:stuart.roebuck@adolos.co.uk">stuart.roebuck@adolos.co.uk</a></td><td>-</td></tr><tr class="b"><td>Ivan Seskar (IS)</td><td><a class="externalLink" href="mailto:iseskar@upsideweb.com">iseskar@upsideweb.com</a></td><td>-</td></tr><tr class="a"><td>Prasanna Uppaladadium (PU)</td><td><a class="externalLink" href="mailto:prasanna@vayusphere.com">prasanna@vayusphere.com</a></td><td>-</td></tr><tr class="b"><td>Gabriel Bucher (GB)</td><td><a class="externalLink" href="mailto:gabriel.bucher@razor.ch">gabriel.bucher@razor.ch</a></td><td>-</td></tr><tr class="a"><td>Matthew Pangaro (MP)</td><td><a class="externalLink" href="mailto:mattp@lokitech.com">mattp@lokitech.com</a></td><td>-</td></tr><tr class="b"><td>Jason Borden (JB)</td><td><a class="externalLink" href="mailto:jborden@javasense.com">jborden@javasense.com</a></td><td>-</td></tr><tr class="a"><td>Randy Stanard (RS)</td><td><a class="externalLink" href="mailto:rstanard@lokitech.com">rstanard@lokitech.com</a></td><td>Contribution=Contributed the James logo</td></tr><tr class="b"><td>Samuel Sadek (SS)</td><td><a class="externalLink" href="mailto:Samuel.Sadek@kpmg.co.uk">Samuel.Sadek@kpmg.co.uk</a></td><td>-</td></tr><tr class="a"><td>Stephan Schiessling (SS2)</td><td><a class="externalLink" href="mailto:s@rapi.com">s@rapi.com</a></td><td>-</td></tr><tr class="b"><td>Eung-ju Park (EP)</td><td><a class="externalLink" href="mailto:colus@apache.org">colus@apache.org</a></td><td>-</td></tr><tr class="a"><td>Paul Hammant (PH)</td><td><a class="externalLink" href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a></td><td>-</td></tr><tr class="b"><td>Jeff Keyser (JK)</td><td><a class="externalLink" href="mailto:JKeyser@telocity.com">JKeyser@telocity.com</a></td><td>-</td></tr><tr class="a"><td>Andrei Ivanov (AI)</td><td><a class="externalLink" href="mailto:myfam@surfeu.fi">myfam@surfeu.fi</a></td><td>-</td></tr><tr class="b"><td>Brad Walker (BW)</td><td><a class="externalLink" href="mailto:bwalker@studentadvantage.com">bwalker@studentadvantage.com</a></td><td>-</td></tr><tr class="a"><td>Christian Buchegger (CB2)</td><td>-</td><td>email=christian.buchegger@planet-interkom.de</td></tr><tr class="b"><td>Shilpa Dalmia (SD)</td><td><a class="externalLink" href="mailto:shilpa@postx.com">shilpa@postx.com</a></td><td>-</td></tr><tr class="a"><td>Steve Short (SS3)</td><td><a class="externalLink" href="mailto:sshort@postx.com">sshort@postx.com</a></td><td>-</td></tr><tr class="b"><td>Aaron Knauf (AK)</td><td><a class="externalLink" href="mailto:aknauf@xtra.co.nz">aknauf@xtra.co.nz</a></td><td>-</td></tr><tr class="a"><td>Serge &quot;Sergei&quot; Sozonoff (SS4)</td><td><a class="externalLink" href="mailto:serge@globalbeach.com">serge@globalbeach.com</a></td><td>-</td></tr><tr class="b"><td>Kai Londenberg [KL]</td><td>-</td><td>email=kai.londenberg@my-vwclub.de</td></tr><tr class="a"><td>Mark Imel [MI]</td><td><a class="externalLink" href="mailto:james@imelshire.com">james@imelshire.com</a></td><td>-</td></tr><tr class="b"><td>Kevin Schmidt [KS]</td><td><a class="externalLink" href="mailto:ktschmidt@earthlink.net">ktschmidt@earthlink.net</a></td><td>-</td></tr><tr class="a"><td>Hontvari Jozsef [HJ]</td><td><a class="externalLink" href="mailto:hontvari2@solware.com">hontvari2@solware.com</a></td><td>-</td></tr><tr class="b"><td>Cesar Bonadio [CB3]</td><td><a class="externalLink" href="mailto:bonadio@picture.com.br">bonadio@picture.com.br</a></td><td>-</td></tr><tr class="a"><td>Marco Tedone [MT]</td><td><a class="externalLink" href="mailto:mtedone@jemos.org">mtedone@jemos.org</a></td><td>-</td></tr><tr class="b"><td>Tim Stephenson [TS]</td><td><a class="externalLink" href="mailto:tim@thestephensons.me.uk">tim@thestephensons.me.uk</a></td><td>-</td></tr><tr class="a"><td>Richard O. Hammer [ROH]</td><td><a class="externalLink" href="mailto:rohammer@earthlink.net">rohammer@earthlink.net</a></td><td>-</td></tr></table><script type="text/javascript">
function offsetDate(id, offset) {
    var now = new Date();
    var nowTime = now.getTime();
    var localOffset = now.getTimezoneOffset();
    var developerTime = nowTime + ( offset * 60 * 60 * 1000 )+ ( localOffset * 60 * 1000 );
    var developerDate = new Date(developerTime);

    document.getElementById(id).innerHTML = developerDate;
}

function init(){
    offsetDate('developer-0', '2');
    offsetDate('developer-1', '2');
    offsetDate('developer-8', '-8');
    offsetDate('developer-19', '1');
}

window.onLoad = init();
</script></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2004-2012
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
