<?xml version="1.0"?>
<!--
 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.
-->
<document>
  <properties>
    <title>Apache Commons Email Release Notes</title>
    <author email="epugh@STOPSPAMopensourceconnections.com">Eric Pugh</author>
  </properties>

  <body>
    <release version="1.6.0" date="YYYY-MM-DD" description="Feature release (Java 8).">
      <action issue="EMAIL-190" type="update" due-to="sgoeschl">
        Fix broken JDK 9 build by updating "easymock" and other dependencies.
      </action>
      <action issue="EMAIL-183" type="update" due-to="Lukas Petrovicky, gitmotte">
        Change from javax.mail:1.6.1 to jakarta.mail:1.6.4.
      </action>
      <action issue="EMAIL-174" type="fix" due-to="Vegard Stuen">
        Upgrade javax.mail dependency to 1.6.1, so that i18n is supported for email addresses.
      </action>
      <action issue="EMAIL-177" type="update" due-to="Gary Gregory">
        Update from Java 6 to 7.
      </action>
      <action type="update" due-to="Gary Gregory" dev="ggregory">
        Update commons-parent from 50 to 52.
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory">
        Bump actions/checkout from 1 to 3, #25 #33, #67.
      </action>
      <action type="update" due-to="Dependabot, Gary Gregory" dev="ggregory">
        Update spotbugs-maven-plugin from 4.0.0 to 4.2.2 #18.
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory">
        Bump spotbugs from 4.0.6 to 4.2.2 #40.
      </action>
      <action type="update" due-to="Dependabot, Gary Gregory" dev="ggregory">
        Update jakarta.mail from 1.6.4 to 1.6.7 #22.
      </action>
      <action type="update" due-to="Dependabot, Gary Gregory" dev="ggregory">
        Bump junit from 4.13 to 4.13.2 #32.
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory, Gary Gregory">
        Bump actions/setup-java from v1.4.0 to v2 #30.
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory">
        Bump commons-release-plugin from 1.0 to 1.7 #23
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory">
        Bump maven-pmd-plugin from 3.13.0 to 3.16.0 #34, #72.
      </action>
      <action type="update" due-to="Gary Gregory">
        Update from Java 7 to 8.
      </action>
      <action type="update" due-to="Gary Gregory">
        Bump tests commons-io:commons-io 2.6 to 2.11.0.
      </action>
      <action type="update" due-to="Dependabot" dev="ggregory">
        Bump actions/cache from 2 to 2.1.7 #39, #48, #60.
      </action>
      <action type="update" due-to="Gary Gregory" dev="ggregory">
        Bump jacoco from 0.8.6 to 0.8.7; fixes jacoco on Java 17.
      </action>
      <action type="update" due-to="Gary Gregory" dev="ggregory">
        Bump org.easymock:easymock from 4.2 to 4.3.
      </action>
    </release>
    <release version="1.5.1" date="2017-MM-DD" description="Maintenance release (Java 6).">
      <action issue="EMAIL-176" type="add" dev="pschumacher">Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility</action>
      <action type="fix" dev="sgoeschl" due-to="Alexander Lehmann">Email.setBounceAddress no longer accepts invalid email addresses.</action>
    </release>
    <release version="1.5" date="2017-08-01">
      <!-- N.B. AFAICT the date attribute is not used anywhere so no point in adding it -->
      <action dev="kinow" type="fix" issue="EMAIL-172" due-to="Thomas Grainger">
        Grammar error in comment
      </action>
      <action dev="sebb" type="fix" issue="EMAIL-169">
        MimeMessageUtils.writeMimeMessage writes stacktrace
      </action>
      <action dev="sebb" type="fix" issue="EMAIL-167" due-to="Lucian Burja">
        DataSourceClassPathResolver doesn't close InputStream when resolving resources
      </action>
      <action dev="sgoeschl" type="update" issue="EMAIL-165" date="2017-01-02">
        Upgrade to javax.mail-1.5.6
      </action>
      <action dev="sgoeschl" type="update" issue="EMAIL-161" date="2016-02-01">
        Remove "javax.activation" dependency since it is included in JDK 1.6 and update to javax.mail-1.5.5
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-160" date="2016-02-01">
        Add Support for International Domain Names. This change requires JDK 1.6+.
      </action>
      <action dev="ggregory" type="add" issue="EMAIL-154" date="2015-07-26" due-to="Ken Geis, Balachandran Sivakumar">
        Add Email#getHeader(String) and Email#getHeaders() methods.
      </action>
      <action dev="ggregory" type="fix">
        CVE-2017-9801 - stripped all line-breaks from subjects in
        order to prevent SMTP header injection.
      </action>
    </release>
    <release version="1.4" date="2015-05-23">
      <action dev="tn" type="fix" issue="EMAIL-149" date="2015-03-10" due-to="Richard DiCroce">
        "Email" threw an "EmailException" when trying to send the email if neither a from
        nor bounce address was specified, although a "mail.from" property was set in the
        mail session.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-151" date="2015-03-10" due-to="Andreas Kohn">
        "ImageHtmlEmail" failed to embed attachments if their data source name was null.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-147" date="2014-12-26" due-to="Can Eskikaya">
        Html emails did not have the correct content-type set when using the Apache Geronimo
        JavaMail implementation v1.8.x.
      </action>
      <action dev="tn" type="add" issue="EMAIL-146" date="2014-12-01" due-to="Alexander Lehmann">
        Added getter for the bounce address of an email to class Email.
      </action>
      <action dev="ggregory" type="update" issue="EMAIL-144" date="2014-10-15">
        Update Oracle JavaMail dependency from 1.4.5 to 1.5.2.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-142" date="2014-10-02" due-to="Marcin Tomiak">
        An "HtmlEmail" with both, an html and plain text content but no attachments or embedded
        images will now be created with mimetype "multipart/alternative" instead of "multipart/mixed".
      </action>
      <action dev="tn" type="add" issue="EMAIL-141" date="2014-09-14" due-to="Stephen Kruger">
        Added support for mapping of content-ids to DataSource in "MimeMessageParser".
      </action>
    </release>
    <release version="1.3.3" date="2014-07-12">
      <action dev="tn" type="fix" issue="EMAIL-140" date="2014-07-01" due-to="Gary Gregory">
        Fix test execution errors with Java 8.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-138" date="2014-05-06" due-to="qed">
        The filename of an attachment was not properly encoded in case it contained
        non-ascii characters.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-137" date="2014-04-30" due-to="Alex Kogan">
        MimeMessageParser did not correctly parse MimeMessage objects created by
        calling HtmlEmail.buildMimeMessage() and HtmlEmail.getMimeMessage().
      </action>
      <action dev="ggregory" type="fix" issue="EMAIL-136" date="2014-02-01" due-to="Ville Skyttä">
        Fix Javadoc 1.8 errors.
      </action>
    </release>
    <release version="1.3.2" date="2013-10-23">
      <action dev="tn" type="update" issue="EMAIL-135" date="2013-10-15" due-to="Andreas Kohn">
        Change visibility of DataSourceUrlResourceResolver.createUrl(String) to protected so
        that sub-classes can override it.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-104" date="2013-10-15" due-to="Hiroshi Ikeda">
        Support default mime charset property "mail.mime.charset" when adding text content
        to instances of either SimpleEmail or HtmlEmail.
      </action>
      <action dev="tn" type="add" issue="EMAIL-132" date="2013-10-10" due-to="Allen Xudong Cheng">
        Added support for sending partial emails in case of invalid addresses.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-131" date="2013-09-14" due-to="Raju Y">
        The MimeMessageParser will now correctly parse MIME multi-parts of type "text/plain"
        and "text/html" with a content disposition header of "attachment". The parts will
        be added to the list of attachments even if there is no other text or html content.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-127" date="2013-07-01" due-to="Dominik Stadler">
        Special characters in the body of an HTML email could lead to an exception when the
        mime message was built.
      </action>
    </release>
    <release version="1.3.1" date="2013-03-04">
      <action dev="tn" type="fix" issue="EMAIL-125" date="2013-02-22" due-to="Jean-Marc">
        DataSourceClassPathResolver will now correctly set the DataSource name for resolved
        resources. Additionally, it is now possible to set the name for a ByteArrayDataSource.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-124" date="2013-02-21" due-to="Stefan Schueffler">
        Header values are not folded twice anymore. The actual encoding and folding is
        now only performed in Email.buildMimeMessage().
      </action>
    </release>
    <release version="1.3" date="2013-01-10">
      <action dev="tn" type="fix" issue="EMAIL-101" date="2012-12-09" due-to="Andrew Starodub">
        Use the provided Content-ID in HtmlEmail#embed(File, String) instead of creating
        a random one. The used and returned Content-ID will be URL encoded (see RFC 2392).
      </action>
      <action dev="tn" type="fix" issue="EMAIL-122" date="2012-12-08" due-to="sebb">
        Upgraded source and binary compatibility to JDK 1.5. Additionally the public/protected
        methods and fields have been properly generified.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-103" date="2012-12-08" due-to="David Rees">
        Do not set the personal name of an address to the email address unless it is
        explicitly specified (affects TO, CC, BCC and FROM addresses).
      </action>
      <action dev="tn" type="add" issue="EMAIL-114" date="2012-12-02" due-to="Gokul Nanthakumar C">
        Added new methods addTo(String[]), addCc(String[]) and addBcc(String[]) to Email.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-117" date="2012-12-02" due-to="sebb">
        Removed emulation support for nested exceptions in EmailException.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-116" date="2012-11-10" due-to="sebb">
        Prevent external modification of internal array in DataSourceCompositeResolver.
      </action>
      <action dev="tn" type="fix" issue="EMAIL-120" date="2012-11-07" due-to="Mike Bell">
        Close temporary input stream in MultiPartEmail#attach(DataSource, String, String)
        to prevent locking of file resources on windows systems.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-105" date="2012-02-04" due-to="Siegfried Goeschl">
        The patch actually broke sending emails over a secured connection - disabled the
        "MAIL_SMTP_SSL_CHECKSERVERIDENTITY" and "MAIL_SMTP_SSL_ENABLE" activation. Tested
        the functionality using GMail, GMX and Office365 so the code is at least working for
        a couple of existing SMTP servers. Also added 'sslCheckServerIdentity' including
        setter and getter. Also added a chapter regarding "Security" to the user manual.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-113" date="2012-02-19" due-to="Peter Kofler">
        Maven Site fails with error in Checkstyle configuration.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-112" date="2012-02-19" due-to="Peter Kofler">
        DataSourceFileResolverTest fails under IBM JDK 1.4 and 1.6 running on Windows.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-111" date="2012-02-18" due-to="Florian Pirchner">
        Update the current trunk to be binary compatible with the commons-email-1.2 release.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-110" date="2012-02-18" due-to="Thomas Pummer">
        Added unit test to ensure that parsing the broken mime message does not cause an OutOfMemoryException.
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-108" date="2011-11-10" due-to="Elisabeth Kasimir, Alexander Kasimir">
        ImageHtmlEmail should support class path resources.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-107" date="2011-09-06" due-to="Claus Polanka, Michael Jakl">
        Added mime.types to META-INF - the definition is actually found in activation.jar
        but did not work.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-106" date="2011-09-06" due-to="Bruno Harbulot">
        STARTTLS can be used even without authenticator.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-105" date="2011-09-06" due-to="Bruno Harbulot">
        Clarified the meaning of setTLS() which actually sends a "STARTTLS" command from the
        client to the SMTP server. Please note that some "protected" variables were renamed
        which could break existing code.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-102" date="2010-12-16" due-to="Okan Özeren">
        Fixed HtmlEmail embed toLowerCase bug with Turkish locale.
      </action>
      <action dev="sgoeschl" type="add" date="2010-12-16">
        Added a MultiPartEmail.attach(File) method since attaching a file is a simple and common.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-101" date="2010-11-08" due-to="Andrew Starodub">
        Specified Content-ID is now used when embedding a File object in an HtmlEmail.
      </action>
      <action dev="niallp" type="fix" date="2010-11-08">
        Restore Java 1.4 compatibility.
      </action>
      <action dev="sgoeschl" type="add" date="2010-11-01">
        Added MimeMessageParser and MimeMessageUtils.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-96" date="2010-10-27">
        Throwing an IllegalStateException when setting mail session properties for an already
        created mail session because the settings would be ignored. Please note that this
        change could potentially break existing (but invalid) code.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-98" date="2010-10-23" due-to="Mario Daepp">
        Encoding and folding of headers is now done by commons-email.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-100" date="2010-10-15" due-to="David Parks">
        The default connection timeout is set to a reasonable default value of 60 seconds.
      </action>
      <action dev="sgoeschl" type="fix" date="2010-10-15">
        Moving the various constants from 'EMail' to 'EmailConstants'
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-76" date="2010-10-15" due-to="Yu Kobayashi">
        All setters are returning "this" to simplify building an email.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-92" date="2010-06-08" due-to="Dominik Stadler">
        Adding ImageHtmlEmail to create HTML emails with embedded images either
        downloaded from HTTP or from the local file system.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-95" date="2010-05-13">
       Calling buildMimeMessage() before invoking send() caused
       duplicated mime parts for HtmlEmail. The implementation now enforces
       that an email can be only used once and throw an exception when
       multiple invocations of buildMimeMessage() are detected.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-91" date="2010-05-13" due-to="Kevin Lester">
        Incorrect SMTP Port number shown in error message when an email fails
        to send due to a blocked port and SSL is used.
      </action>        
    </release>
    <release version="1.2" date="2009-10-26">
      <action dev="sgoeschl" type="update" date="2009-06-26">
        Changing groupId from "commons-email" to "org.apache.commons" 
        because the 1.1 release was already using "org.apache.commons"
      </action>    
      <action dev="sgoeschl" type="fix" date="2009-06-16" due-to="sebb">
        Using "http://example.invalid" for a bad url - ".invalid" is reserved
        and not intended to be installed as a top-level domain in the global 
        Domain Name System (DNS) of the Internet.
      </action>    
      <action dev="sgoeschl" type="fix" date="2009-06-16" due-to="sebb">
        Made BaseEmailTestCase abstract and fixed a few coding issues.
      </action>    
      <action dev="sgoeschl" type="fix" issue="EMAIL-87" date="2009-06-16" due-to="sebb">
        HtmlEmail invokes java.net.URL.equals(Object), which blocks to do domain name resolution. This
        is avoided by using "url.toExternalForm().equals()" instead of "url.equals()".
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-75" date="2009-04-05" due-to="Yu Kobayashi">
        Email.setFrom and Email.addTo are using Email.charset to properly encode the name.
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-79" date="2009-04-05" due-to="Edvin Syse, Corey Scott">
        SimpleEmail#setMsg() with UTF-8 content honors correct charset in header and
        does encode the content correctly now.
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-84" date="2009-02-22" due-to="Claudio Miranda">
        Created additional methods to support timeouts.
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-74" date="2009-02-22" due-to="Jim McCabe, Corey Scott">
        Create an overridable method in Email.java to create the MimeMessage instance.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-71" date="2009-02-22" due-to="Teemu Lang, Corey Scott">
        If setHostName() has not been called, getHostName() tries to return
        this.session.getProperty(MAIL_HOST). If mail session has not been
        created yet, this will throw a NullPointerException. Now getHostName()
        checks that this.session is not null before trying to access it.
      </action>
      <action dev="sgoeschl" type="add" issue="EMAIL-81" date="2009-02-22" due-to="Travis Reader, Corey Scott">
        Add getTo and getReplyTo to Email class.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-78" date="2009-02-08" due-to="Aaron Digulla, Corey Scott">
        Provide better diagnostics when attaching  documents fail.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-70" date="2008-12-29" due-to="F. Andy Seidl">
        When mail authentication is required and no username/password is supplied
        than the provided mail session is used. If a username/password is found
        the implementation creates a new mail session and a DefaultAuthenticator
        as convinence implementation.
      </action>
      <action dev="sgoeschl" type="fix" issue="EMAIL-65" date="2008-12-29" due-to="Kenneth Gendron">
        Using Kenneth's implementation of HtmlEmail.buildMimeMessage() to fix a
        couple of HtmlEmail layout issues. Also thanks to Martin Lau and Morten
        Hattesen for providing in-depth analysis of the problem
      </action>
      <action dev="sgoeschl" type="fix">
        During regression tests write out the generated MimeMessage instead of
        WiserEmail.toString().
      </action>
    </release>
    <release version="1.1" date="2007-09-27">
      <action dev="bspeakmon" type="add" issue="EMAIL-35" due-to="Brandon Wolfe">
        Support embedding of raw DataSource attachments in HtmlEmail.
      </action>
      <action dev="bspeakmon" type="update" issue="EMAIL-64" due-to="Ben Speakmon">
        Use wiser instead of dumbster for test cases. Original patch supplied by Bindul Bhowmik.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-62" due-to="Ben Speakmon">
        Build patches to enforce source 1.4 and target 1.4 when compiling.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-52" due-to="Andrew Liles">
        Identical Inline images should share same BodyPart.
        Fixed by EMAIL-50.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-28" due-to="Phil Bretherton">
        Problems with HTML emails with attachments and embedded images.
        Fixed by EMAIL-50.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-50" due-to="Andrew Liles">
        HTML Emails with images don't display in Outlook 2000.
        Fix from Ben Speakmon.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-54" due-to="Piero Ottuzzi">
        Use JDK1.4 and java.nio.Charset instead of keeping our own.
        Fix from Ben Speakmon.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-14" due-to="locka">
        not support content charset gb2312.
        Fixed by EMAIL-54.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-25" due-to="James Huang">
        Address char-set can not be individually set.
        Fixed by EMAIL-54.
      </action>
      <action dev="dion" type="fix" issue="EMAIL-1" due-to="James Mc Millan">
        setCharset() in Email does not set the charset for the message content.
        Fix provided by Ben Speakmon.
      </action>
      <action dev="scolebourne" type="fix" >
        Enhance website
      </action>
      <action dev="dion" type="add" issue="EMAIL-45" due-to="Dave Cherkassky">
        Added Email.setReplyTo(Collection)
      </action>
      <action dev="dion" type="fix" issue="EMAIL-37" due-to="Piero Ottuzzi">
        If you provide a mailSession in tomcat you cannot send email using
        commons-email: the problem is mainly caused by typos or missing constant
        declaration.
      </action>
      <action dev="dion" type="add" issue="EMAIL-48">
        Added TLS helper methods on Email
        and Added setMailSessionFromJNDI(String) helper method
      </action>
      <action dev="dion" type="fix" issue="EMAIL-7" due-to="Nuno Ponte">
        Added HtmlEmail.embed(String,String) as a wrapper to embed(URL,String)
      </action>
    </release>
    <release version="1.0" date="2005-09-27"/>
    <release version="1.0-rc8" date="2005-09-07">
      <action dev="henning" type="fix">
        Make sure that the unit tests don't fail under JDK 1.3.x with 
        java.net.BindException: Address already in use
      </action>
      <action dev="henning" type="update" due-to="Niall Pemberton" issue="EMAIL-49">
        Replace our usage of address.validate() with simpler code that allows
        commons-email to work with javamail 1.2 / J2EE 1.3 environment. Added an
        unit test which verifies the behavior.
      </action>
      <action dev="henning" type="update" due-to="Niall Pemberton" issue="EMAIL-58">
        Add an unit test to check for invalid addresses.
      </action>
      <action dev="henning" type="update" due-to="Stephen Colebourne" issue="EMAIL-12">
        Remove dependencies to commons-lang, allowing commons-email to exist without
        any external dependencies in an J2EE 1.4+ environment.
      </action>
    </release>
    <release version="1.0-rc6-SNAPSHOT" date="in Subversion">
      <action dev="epugh" type="update" due-to="Troy Poppe" issue="EMAIL-51">
        Improve MultiPartEmail to ease extending it.
      </action>
      <action dev="sgoeschl" type="update">
        Refactoring the code to seperate creation of a MimeMessage and sending it.
      </action>
      <action dev="dion" type="update">Add serialVersionUID to EmailException</action>
      <action dev="dion" type="update">Use Dumbster 1.6 compiled with jdk13 for testing</action>
      <action dev="dion" type="fix" issue="EMAIL-24" due-to="Eric Spiegelberg">
        Refactor Hashtable usage to Map
      </action>
      <action dev="epugh" type="add" due-to="Mark Lowe" issue="EMAIL-42">
        Email throws EmailException wrapping underlying JavaMail exception
      </action>
      <action dev="epugh" type="add" due-to="Corey Scott" issue="EMAIL-32">
        Change port for dumbster from 25 to 2500 to use unreserved port.
      </action>
      <action dev="epugh" type="add" due-to="Corey Scott" issue="EMAIL-3">
        Add back in ByteArrayDataSource.
      </action>
      <action dev="epugh" type="remove">
        Removed deprecated MailMessage and ByteArrayDataSource.
      </action>
      <action dev="epugh" type="add">
        Output test emails to /target/test-emails as .txt files for manual
        review.
      </action>
      <action dev="epugh" type="add" due-to="Mark Lowe" issue="EMAIL-19">
        Inline attatchment encoding was incorrect.
      </action>
      <action dev="epugh" type="add">
        Integrate our own checkstyle config instead of using Turbine style only.
      </action>
      <action dev="epugh" type="add" due-to="Joe Germuska" issue="EMAIL-55">
        Clone the System.getProperties() call instead of putting random properties
        into it.
      </action>
      <action dev="epugh" type="add" issue="EMAIL-8">
        Can't supply a javax.mail.Session to Commons Email component
      </action>
      <action dev="epugh" type="add" issue="EMAIL-23" due-to="Corey Scott">
        HTML email with plain text alternative and attachments
      </action>
      <action dev="epugh" type="add" issue="EMAIL-33" due-to="Corey Scott">
        Integrate use of Dumbster to supply a fake SMTP server.
      </action>
      <action dev="epugh" type="add" due-to="Corey Scott">
        Lots of new unit tests and cleanup of code.
      </action>
      <action dev="epugh" type="update">
        Update dependencies to latest available.
      </action>
      <action dev="germuska" type="add" issue="EMAIL-55">
        Support the delivery of bounced messages to an address other than "from".
      </action>
    </release>
  </body>
</document>
