commons-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t.@apache.org
Subject svn commit: r952467 [22/22] - in /websites/production/commons/content/proper/commons-email/javadocs/api-release: ./ org/ org/apache/ org/apache/commons/ org/apache/commons/mail/ org/apache/commons/mail/class-use/ org/apache/commons/mail/resolver/ org/a...
Date Sat, 23 May 2015 18:45:38 GMT
Added: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html
==============================================================================
--- websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html (added)
+++ websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html Sat May 23 18:45:36 2015
@@ -0,0 +1,529 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * contributor license agreements.  See the NOTICE file distributed with<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * the License.  You may obtain a copy of the License at<a name="line.7"></a>
+<span class="sourceLineNo">008</span> *<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> */<a name="line.16"></a>
+<span class="sourceLineNo">017</span>package org.apache.commons.mail.util;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import java.io.BufferedInputStream;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.BufferedOutputStream;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.ByteArrayOutputStream;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.InputStream;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.UnsupportedEncodingException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.ArrayList;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Arrays;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Collection;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Collections;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.HashMap;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>import javax.activation.DataHandler;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import javax.activation.DataSource;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import javax.mail.Message;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import javax.mail.MessagingException;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import javax.mail.Multipart;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import javax.mail.Part;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import javax.mail.internet.ContentType;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.mail.internet.InternetAddress;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.mail.internet.MimeBodyPart;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.mail.internet.MimeMessage;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.mail.internet.MimePart;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.mail.internet.MimeUtility;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.mail.internet.ParseException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.mail.util.ByteArrayDataSource;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>/**<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * Parses a MimeMessage and stores the individual parts such a plain text,<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * HTML text and attachments.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * @since 1.3<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * @version $Id$<a name="line.53"></a>
+<span class="sourceLineNo">054</span> */<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MimeMessageParser<a name="line.55"></a>
+<span class="sourceLineNo">056</span>{<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    /** The MimeMessage to convert */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    private final MimeMessage mimeMessage;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>    /** Plain mail content from MimeMessage */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    private String plainContent;<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>    /** Html mail content from MimeMessage */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    private String htmlContent;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>    /** List of attachments of MimeMessage */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    private final List&lt;DataSource&gt; attachmentList;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    /** Attachments stored by their content-id */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private final Map&lt;String, DataSource&gt; cidMap;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    /** Is this a Multipart email */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    private boolean isMultiPart;<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>    /**<a name="line.75"></a>
+<span class="sourceLineNo">076</span>     * Constructs an instance with the MimeMessage to be extracted.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>     *<a name="line.77"></a>
+<span class="sourceLineNo">078</span>     * @param message the message to parse<a name="line.78"></a>
+<span class="sourceLineNo">079</span>     */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    public MimeMessageParser(final MimeMessage message)<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        attachmentList = new ArrayList&lt;DataSource&gt;();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        cidMap = new HashMap&lt;String, DataSource&gt;();<a name="line.83"></a>
+<span class="sourceLineNo">084</span>        this.mimeMessage = message;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        this.isMultiPart = false;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>     * Does the actual extraction.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>     *<a name="line.90"></a>
+<span class="sourceLineNo">091</span>     * @return this instance<a name="line.91"></a>
+<span class="sourceLineNo">092</span>     * @throws Exception parsing the mime message failed<a name="line.92"></a>
+<span class="sourceLineNo">093</span>     */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public MimeMessageParser parse() throws Exception<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        this.parse(null, mimeMessage);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        return this;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span>     * @return the 'to' recipients of the message<a name="line.101"></a>
+<span class="sourceLineNo">102</span>     * @throws Exception determining the recipients failed<a name="line.102"></a>
+<span class="sourceLineNo">103</span>     */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public List&lt;javax.mail.Address&gt; getTo() throws Exception<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        final javax.mail.Address[] recipients = this.mimeMessage.getRecipients(Message.RecipientType.TO);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        return recipients != null ? Arrays.asList(recipients) : new ArrayList&lt;javax.mail.Address&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>    /**<a name="line.110"></a>
+<span class="sourceLineNo">111</span>     * @return the 'cc' recipients of the message<a name="line.111"></a>
+<span class="sourceLineNo">112</span>     * @throws Exception determining the recipients failed<a name="line.112"></a>
+<span class="sourceLineNo">113</span>     */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    public List&lt;javax.mail.Address&gt; getCc() throws Exception<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        final javax.mail.Address[] recipients = this.mimeMessage.getRecipients(Message.RecipientType.CC);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        return recipients != null ? Arrays.asList(recipients) : new ArrayList&lt;javax.mail.Address&gt;();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>     * @return the 'bcc' recipients of the message<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @throws Exception determining the recipients failed<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public List&lt;javax.mail.Address&gt; getBcc() throws Exception<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        final javax.mail.Address[] recipients = this.mimeMessage.getRecipients(Message.RecipientType.BCC);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return recipients != null ? Arrays.asList(recipients) : new ArrayList&lt;javax.mail.Address&gt;();<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    /**<a name="line.130"></a>
+<span class="sourceLineNo">131</span>     * @return the 'from' field of the message<a name="line.131"></a>
+<span class="sourceLineNo">132</span>     * @throws Exception parsing the mime message failed<a name="line.132"></a>
+<span class="sourceLineNo">133</span>     */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    public String getFrom() throws Exception<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        final javax.mail.Address[] addresses = this.mimeMessage.getFrom();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        if (addresses == null || addresses.length == 0)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>            return null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        return ((InternetAddress) addresses[0]).getAddress();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    /**<a name="line.144"></a>
+<span class="sourceLineNo">145</span>     * @return the 'replyTo' address of the email<a name="line.145"></a>
+<span class="sourceLineNo">146</span>     * @throws Exception parsing the mime message failed<a name="line.146"></a>
+<span class="sourceLineNo">147</span>     */<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    public String getReplyTo() throws Exception<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        final javax.mail.Address[] addresses = this.mimeMessage.getReplyTo();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        if (addresses == null || addresses.length == 0)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>            return null;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        return ((InternetAddress) addresses[0]).getAddress();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>     * @return the mail subject<a name="line.159"></a>
+<span class="sourceLineNo">160</span>     * @throws Exception parsing the mime message failed<a name="line.160"></a>
+<span class="sourceLineNo">161</span>     */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public String getSubject() throws Exception<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        return this.mimeMessage.getSubject();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    /**<a name="line.167"></a>
+<span class="sourceLineNo">168</span>     * Extracts the content of a MimeMessage recursively.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>     *<a name="line.169"></a>
+<span class="sourceLineNo">170</span>     * @param parent the parent multi-part<a name="line.170"></a>
+<span class="sourceLineNo">171</span>     * @param part   the current MimePart<a name="line.171"></a>
+<span class="sourceLineNo">172</span>     * @throws MessagingException parsing the MimeMessage failed<a name="line.172"></a>
+<span class="sourceLineNo">173</span>     * @throws IOException        parsing the MimeMessage failed<a name="line.173"></a>
+<span class="sourceLineNo">174</span>     */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    protected void parse(final Multipart parent, final MimePart part)<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        throws MessagingException, IOException<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        if (isMimeType(part, "text/plain") &amp;&amp; plainContent == null<a name="line.178"></a>
+<span class="sourceLineNo">179</span>                &amp;&amp; !MimePart.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            plainContent = (String) part.getContent();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        else<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            if (isMimeType(part, "text/html") &amp;&amp; htmlContent == null<a name="line.185"></a>
+<span class="sourceLineNo">186</span>                    &amp;&amp; !MimePart.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>                htmlContent = (String) part.getContent();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>            }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            else<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>                if (isMimeType(part, "multipart/*"))<a name="line.192"></a>
+<span class="sourceLineNo">193</span>                {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>                    this.isMultiPart = true;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>                    final Multipart mp = (Multipart) part.getContent();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                    final int count = mp.getCount();<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>                    // iterate over all MimeBodyPart<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>                    for (int i = 0; i &lt; count; i++)<a name="line.200"></a>
+<span class="sourceLineNo">201</span>                    {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>                        parse(mp, (MimeBodyPart) mp.getBodyPart(i));<a name="line.202"></a>
+<span class="sourceLineNo">203</span>                    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>                }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>                else<a name="line.205"></a>
+<span class="sourceLineNo">206</span>                {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>                    final String cid = stripContentId(part.getContentID());<a name="line.207"></a>
+<span class="sourceLineNo">208</span>                    final DataSource ds = createDataSource(parent, part);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>                    if (cid != null)<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                    {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                        this.cidMap.put(cid, ds);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                    this.attachmentList.add(ds);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>                }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    /**<a name="line.219"></a>
+<span class="sourceLineNo">220</span>     * Strips the content id of any whitespace and angle brackets.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>     * @param contentId the string to strip<a name="line.221"></a>
+<span class="sourceLineNo">222</span>     * @return a stripped version of the content id<a name="line.222"></a>
+<span class="sourceLineNo">223</span>     */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    private String stripContentId(final String contentId)<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        if (contentId == null)<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>            return null;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        return contentId.trim().replaceAll("[\\&lt;\\&gt;]", "");<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>     * Checks whether the MimePart contains an object of the given mime type.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>     *<a name="line.235"></a>
+<span class="sourceLineNo">236</span>     * @param part     the current MimePart<a name="line.236"></a>
+<span class="sourceLineNo">237</span>     * @param mimeType the mime type to check<a name="line.237"></a>
+<span class="sourceLineNo">238</span>     * @return {@code true} if the MimePart matches the given mime type, {@code false} otherwise<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     * @throws MessagingException parsing the MimeMessage failed<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     * @throws IOException        parsing the MimeMessage failed<a name="line.240"></a>
+<span class="sourceLineNo">241</span>     */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    private boolean isMimeType(final MimePart part, final String mimeType)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        throws MessagingException, IOException<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        // Do not use part.isMimeType(String) as it is broken for MimeBodyPart<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        // and does not really check the actual content type.<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>        try<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            final ContentType ct = new ContentType(part.getDataHandler().getContentType());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>            return ct.match(mimeType);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        catch (final ParseException ex)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            return part.getContentType().equalsIgnoreCase(mimeType);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    /**<a name="line.259"></a>
+<span class="sourceLineNo">260</span>     * Parses the MimePart to create a DataSource.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>     *<a name="line.261"></a>
+<span class="sourceLineNo">262</span>     * @param parent the parent multi-part<a name="line.262"></a>
+<span class="sourceLineNo">263</span>     * @param part   the current part to be processed<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * @return the DataSource<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * @throws MessagingException creating the DataSource failed<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @throws IOException        creating the DataSource failed<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     */<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    protected DataSource createDataSource(final Multipart parent, final MimePart part)<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        throws MessagingException, IOException<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        final DataHandler dataHandler = part.getDataHandler();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        final DataSource dataSource = dataHandler.getDataSource();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        final String contentType = getBaseMimeType(dataSource.getContentType());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        final byte[] content = this.getContent(dataSource.getInputStream());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        final ByteArrayDataSource result = new ByteArrayDataSource(content, contentType);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        final String dataSourceName = getDataSourceName(part, dataSource);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>        result.setName(dataSourceName);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        return result;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    /** @return Returns the mimeMessage. */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    public MimeMessage getMimeMessage()<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        return mimeMessage;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    /** @return Returns the isMultiPart. */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public boolean isMultipart()<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        return isMultiPart;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    /** @return Returns the plainContent if any */<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    public String getPlainContent()<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        return plainContent;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    /** @return Returns the attachmentList. */<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    public List&lt;DataSource&gt; getAttachmentList()<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        return attachmentList;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    /**<a name="line.306"></a>
+<span class="sourceLineNo">307</span>     * Returns a collection of all content-ids in the parsed message.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>     * &lt;p&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>     * The content-ids are stripped of any angle brackets, i.e. "part1" instead<a name="line.309"></a>
+<span class="sourceLineNo">310</span>     * of "&amp;lt;part1&amp;gt;".<a name="line.310"></a>
+<span class="sourceLineNo">311</span>     *<a name="line.311"></a>
+<span class="sourceLineNo">312</span>     * @return the collection of content ids.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>     * @since 1.3.4<a name="line.313"></a>
+<span class="sourceLineNo">314</span>     */<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    public Collection&lt;String&gt; getContentIds()<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        return Collections.unmodifiableSet(cidMap.keySet());<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    /** @return Returns the htmlContent if any */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    public String getHtmlContent()<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        return htmlContent;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>    /** @return true if a plain content is available */<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public boolean hasPlainContent()<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        return this.plainContent != null;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    /** @return true if HTML content is available */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    public boolean hasHtmlContent()<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        return this.htmlContent != null;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>    /** @return true if attachments are available */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public boolean hasAttachments()<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        return this.attachmentList.size() &gt; 0;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>    /**<a name="line.344"></a>
+<span class="sourceLineNo">345</span>     * Find an attachment using its name.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>     *<a name="line.346"></a>
+<span class="sourceLineNo">347</span>     * @param name the name of the attachment<a name="line.347"></a>
+<span class="sourceLineNo">348</span>     * @return the corresponding datasource or null if nothing was found<a name="line.348"></a>
+<span class="sourceLineNo">349</span>     */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    public DataSource findAttachmentByName(final String name)<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        DataSource dataSource;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>        for (int i = 0; i &lt; getAttachmentList().size(); i++)<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>            dataSource = getAttachmentList().get(i);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>            if (name.equalsIgnoreCase(dataSource.getName()))<a name="line.357"></a>
+<span class="sourceLineNo">358</span>            {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>                return dataSource;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>            }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>        return null;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span>     * Find an attachment using its content-id.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>     * &lt;p&gt;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>     * The content-id must be stripped of any angle brackets,<a name="line.369"></a>
+<span class="sourceLineNo">370</span>     * i.e. "part1" instead of "&amp;lt;part1&amp;gt;".<a name="line.370"></a>
+<span class="sourceLineNo">371</span>     *<a name="line.371"></a>
+<span class="sourceLineNo">372</span>     * @param cid the content-id of the attachment<a name="line.372"></a>
+<span class="sourceLineNo">373</span>     * @return the corresponding datasource or null if nothing was found<a name="line.373"></a>
+<span class="sourceLineNo">374</span>     * @since 1.3.4<a name="line.374"></a>
+<span class="sourceLineNo">375</span>     */<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    public DataSource findAttachmentByCid(final String cid)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        final DataSource dataSource = cidMap.get(cid);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        return dataSource;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    /**<a name="line.382"></a>
+<span class="sourceLineNo">383</span>     * Determines the name of the data source if it is not already set.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>     *<a name="line.384"></a>
+<span class="sourceLineNo">385</span>     * @param part the mail part<a name="line.385"></a>
+<span class="sourceLineNo">386</span>     * @param dataSource the data source<a name="line.386"></a>
+<span class="sourceLineNo">387</span>     * @return the name of the data source or {@code null} if no name can be determined<a name="line.387"></a>
+<span class="sourceLineNo">388</span>     * @throws MessagingException accessing the part failed<a name="line.388"></a>
+<span class="sourceLineNo">389</span>     * @throws UnsupportedEncodingException decoding the text failed<a name="line.389"></a>
+<span class="sourceLineNo">390</span>     */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    protected String getDataSourceName(final Part part, final DataSource dataSource)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        throws MessagingException, UnsupportedEncodingException<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        String result = dataSource.getName();<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (result == null || result.length() == 0)<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            result = part.getFileName();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>        if (result != null &amp;&amp; result.length() &gt; 0)<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            result = MimeUtility.decodeText(result);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        else<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>            result = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>        return result;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    /**<a name="line.413"></a>
+<span class="sourceLineNo">414</span>     * Read the content of the input stream.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>     *<a name="line.415"></a>
+<span class="sourceLineNo">416</span>     * @param is the input stream to process<a name="line.416"></a>
+<span class="sourceLineNo">417</span>     * @return the content of the input stream<a name="line.417"></a>
+<span class="sourceLineNo">418</span>     * @throws IOException reading the input stream failed<a name="line.418"></a>
+<span class="sourceLineNo">419</span>     */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    private byte[] getContent(final InputStream is)<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        throws IOException<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        int ch;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        byte[] result;<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>        final ByteArrayOutputStream os = new ByteArrayOutputStream();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        final BufferedInputStream isReader = new BufferedInputStream(is);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        final BufferedOutputStream osWriter = new BufferedOutputStream(os);<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>        while ((ch = isReader.read()) != -1)<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>            osWriter.write(ch);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>        osWriter.flush();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        result = os.toByteArray();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        osWriter.close();<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>        return result;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    /**<a name="line.442"></a>
+<span class="sourceLineNo">443</span>     * Parses the mimeType.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>     *<a name="line.444"></a>
+<span class="sourceLineNo">445</span>     * @param fullMimeType the mime type from the mail api<a name="line.445"></a>
+<span class="sourceLineNo">446</span>     * @return the real mime type<a name="line.446"></a>
+<span class="sourceLineNo">447</span>     */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    private String getBaseMimeType(final String fullMimeType)<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        final int pos = fullMimeType.indexOf(';');<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        if (pos &gt;= 0)<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>            return fullMimeType.substring(0, pos);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        return fullMimeType;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>}<a name="line.457"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html
------------------------------------------------------------------------------
    svn:keywords = Id Revision HeadURL

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageParser.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html
==============================================================================
--- websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html (added)
+++ websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html Sat May 23 18:45:36 2015
@@ -0,0 +1,260 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * contributor license agreements.  See the NOTICE file distributed with<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * the License.  You may obtain a copy of the License at<a name="line.7"></a>
+<span class="sourceLineNo">008</span> *<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> */<a name="line.16"></a>
+<span class="sourceLineNo">017</span>package org.apache.commons.mail.util;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import javax.mail.MessagingException;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import javax.mail.Session;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import javax.mail.internet.MimeMessage;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.ByteArrayInputStream;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.File;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.FileInputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.FileOutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.InputStream;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * Static helper methods.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @since 1.3<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @version $Id$<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public final class MimeMessageUtils<a name="line.35"></a>
+<span class="sourceLineNo">036</span>{<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    /**<a name="line.37"></a>
+<span class="sourceLineNo">038</span>     * Instances should NOT be constructed in standard programming.<a name="line.38"></a>
+<span class="sourceLineNo">039</span>     */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    private MimeMessageUtils()<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>        super();<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    }<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>    /**<a name="line.45"></a>
+<span class="sourceLineNo">046</span>     * Create a MimeMessage.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>     *<a name="line.47"></a>
+<span class="sourceLineNo">048</span>     * @param session the mail session<a name="line.48"></a>
+<span class="sourceLineNo">049</span>     * @param source the input data<a name="line.49"></a>
+<span class="sourceLineNo">050</span>     * @return the MimeMessage<a name="line.50"></a>
+<span class="sourceLineNo">051</span>     * @throws MessagingException creating the MimeMessage failed<a name="line.51"></a>
+<span class="sourceLineNo">052</span>     * @throws IOException creating the MimeMessage failed<a name="line.52"></a>
+<span class="sourceLineNo">053</span>     */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    public static MimeMessage createMimeMessage(final Session session, final byte[] source)<a name="line.54"></a>
+<span class="sourceLineNo">055</span>        throws MessagingException, IOException<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>        ByteArrayInputStream is = null;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>        try<a name="line.59"></a>
+<span class="sourceLineNo">060</span>        {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>            is = new ByteArrayInputStream(source);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>            return new MimeMessage(session, is);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        }<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        finally<a name="line.64"></a>
+<span class="sourceLineNo">065</span>        {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>            if (is != null)<a name="line.66"></a>
+<span class="sourceLineNo">067</span>            {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>                is.close();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>            }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>    /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>     * Create a MimeMessage.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>     *<a name="line.75"></a>
+<span class="sourceLineNo">076</span>     * @param session the mail session<a name="line.76"></a>
+<span class="sourceLineNo">077</span>     * @param source the input data<a name="line.77"></a>
+<span class="sourceLineNo">078</span>     * @return the MimeMessage<a name="line.78"></a>
+<span class="sourceLineNo">079</span>     * @throws MessagingException creating the MimeMessage failed<a name="line.79"></a>
+<span class="sourceLineNo">080</span>     * @throws IOException creating the MimeMessage failed<a name="line.80"></a>
+<span class="sourceLineNo">081</span>     */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public static MimeMessage createMimeMessage(final Session session, final File source)<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        throws MessagingException, IOException<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        FileInputStream is = null;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>        try<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>            is = new FileInputStream(source);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>            return createMimeMessage(session, is);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        }<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        finally<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>            if (is != null)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>            {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>                is.close();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>            }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>    /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>     * Create a MimeMessage.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>     *<a name="line.103"></a>
+<span class="sourceLineNo">104</span>     * @param session the mail session<a name="line.104"></a>
+<span class="sourceLineNo">105</span>     * @param source the input data<a name="line.105"></a>
+<span class="sourceLineNo">106</span>     * @return the MimeMessage<a name="line.106"></a>
+<span class="sourceLineNo">107</span>     * @throws MessagingException creating the MimeMessage failed<a name="line.107"></a>
+<span class="sourceLineNo">108</span>     */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    public static MimeMessage createMimeMessage(final Session session, final InputStream source)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        throws MessagingException<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        return new MimeMessage(session, source);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span>     * Create a MimeMessage using the platform's default character encoding.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>     *<a name="line.117"></a>
+<span class="sourceLineNo">118</span>     * @param session the mail session<a name="line.118"></a>
+<span class="sourceLineNo">119</span>     * @param source the input data<a name="line.119"></a>
+<span class="sourceLineNo">120</span>     * @return the MimeMessage<a name="line.120"></a>
+<span class="sourceLineNo">121</span>     * @throws MessagingException creating the MimeMessage failed<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @throws IOException creating the MimeMessage failed<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public static MimeMessage createMimeMessage(final Session session, final String source)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        throws MessagingException, IOException<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        ByteArrayInputStream is = null;<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>        try<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>            final byte[] byteSource = source.getBytes();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            is = new ByteArrayInputStream(byteSource);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>            return createMimeMessage(session, is);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        finally<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>            if (is != null)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>            {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>                is.close();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    /**<a name="line.144"></a>
+<span class="sourceLineNo">145</span>     * Convenience method to write a MimeMessage into a file.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>     *<a name="line.146"></a>
+<span class="sourceLineNo">147</span>     * @param mimeMessage the MimeMessage to write<a name="line.147"></a>
+<span class="sourceLineNo">148</span>     * @param resultFile  the file containing the MimeMessgae<a name="line.148"></a>
+<span class="sourceLineNo">149</span>     * @throws MessagingException accessing MimeMessage failed<a name="line.149"></a>
+<span class="sourceLineNo">150</span>     * @throws IOException        writing the MimeMessage failed<a name="line.150"></a>
+<span class="sourceLineNo">151</span>     */<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    public static void writeMimeMessage(final MimeMessage mimeMessage, final File resultFile)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        throws MessagingException, IOException<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    {<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>        FileOutputStream fos = null;<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>        try<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            if (!resultFile.getParentFile().exists() &amp;&amp; !resultFile.getParentFile().mkdirs())<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>                throw new IOException(<a name="line.162"></a>
+<span class="sourceLineNo">163</span>                        "Failed to create the following parent directories: "<a name="line.163"></a>
+<span class="sourceLineNo">164</span>                                + resultFile.getParentFile());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>            fos = new FileOutputStream(resultFile);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>            mimeMessage.writeTo(fos);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            fos.flush();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>            fos.close();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            fos = null;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        finally<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            if (fos != null)<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>                try<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>                    fos.close();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>                catch (final Exception e)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>                    e.printStackTrace();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>}<a name="line.188"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html
------------------------------------------------------------------------------
    svn:keywords = Id Revision HeadURL

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/src-html/org/apache/commons/mail/util/MimeMessageUtils.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css
==============================================================================
--- websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css (added)
+++ websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css Sat May 23 18:45:36 2015
@@ -0,0 +1,474 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:Arial, Helvetica, sans-serif;
+    font-size:76%;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-size:1.3em;
+}
+h1 {
+    font-size:1.8em;
+}
+h2 {
+    font-size:1.5em;
+}
+h3 {
+    font-size:1.4em;
+}
+h4 {
+    font-size:1.3em;
+}
+h5 {
+    font-size:1.2em;
+}
+h6 {
+    font-size:1.1em;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-size:1.2em;
+}
+dt code {
+    font-size:1.2em;
+}
+table tr td dt code {
+    font-size:1.2em;
+    vertical-align:top;
+}
+sup {
+    font-size:.6em;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:.8em;
+    z-index:200;
+    margin-top:-7px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    background-image:url(resources/titlebar.gif);
+    background-position:left top;
+    background-repeat:no-repeat;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:1em;
+    margin:0;
+}
+.topNav {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.bottomNav {
+    margin-top:10px;
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.subNav {
+    background-color:#dee3e9;
+    border-bottom:1px solid #9eadc0;
+    float:left;
+    width:100%;
+    overflow:hidden;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding:3px 6px;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+    font-size:90%;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+.navBarCell1Rev {
+    background-image:url(resources/tab.gif);
+    background-color:#a88834;
+    color:#FFFFFF;
+    margin: auto 5px;
+    border:1px solid #c9aa44;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader h1 {
+    font-size:1.3em;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 25px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:1.2em;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:1.0em;
+}
+.indexContainer h2 {
+    font-size:1.1em;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:1.1em;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:10px 0 10px 20px;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:25px;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #9eadc0;
+    background-color:#f9f9f9;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:1px solid #9eadc0;
+    border-top:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+    border-bottom:1px solid #9eadc0;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.contentContainer table, .classUseContainer table, .constantValuesContainer table {
+    border-bottom:1px solid #9eadc0;
+    width:100%;
+}
+.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table {
+    width:100%;
+}
+.contentContainer .description table, .contentContainer .details table {
+    border-bottom:none;
+}
+.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{
+    vertical-align:top;
+    padding-right:20px;
+}
+.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast,
+.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast,
+.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne,
+.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne {
+    padding-right:3px;
+}
+.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#FFFFFF;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    margin:0px;
+}
+caption a:link, caption a:hover, caption a:active, caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span {
+    white-space:nowrap;
+    padding-top:8px;
+    padding-left:8px;
+    display:block;
+    float:left;
+    background-image:url(resources/titlebar.gif);
+    height:18px;
+}
+.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd {
+    width:10px;
+    background-image:url(resources/titlebar_end.gif);
+    background-repeat:no-repeat;
+    background-position:top right;
+    position:relative;
+    float:left;
+}
+ul.blockList ul.blockList li.blockList table {
+    margin:0 0 12px 0px;
+    width:100%;
+}
+.tableSubHeadingColor {
+    background-color: #EEEEFF;
+}
+.altColor {
+    background-color:#eeeeef;
+}
+.rowColor {
+    background-color:#ffffff;
+}
+.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td {
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+    background:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+td.colFirst, th.colFirst {
+    border-left:1px solid #9eadc0;
+    white-space:nowrap;
+}
+td.colLast, th.colLast {
+    border-right:1px solid #9eadc0;
+}
+td.colOne, th.colOne {
+    border-right:1px solid #9eadc0;
+    border-left:1px solid #9eadc0;
+}
+table.overviewSummary  {
+    padding:0px;
+    margin-left:0px;
+}
+table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
+table.overviewSummary td.colOne, table.overviewSummary th.colOne {
+    width:25%;
+    vertical-align:middle;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+    width:25%;
+    vertical-align:middle;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:.9em;
+}
+.block {
+    display:block;
+    margin:3px 0 0 0;
+}
+.strong {
+    font-weight:bold;
+}

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css
------------------------------------------------------------------------------
    svn:keywords = Id Revision HeadURL

Propchange: websites/production/commons/content/proper/commons-email/javadocs/api-release/stylesheet.css
------------------------------------------------------------------------------
    svn:mime-type = text/css



Mime
View raw message