LOG4J为输出日志信息提供了非常丰富的功能,如输出到控制台、文件、HMTL文件、远程数据、JMS、EMAIL等,个人认为EMAIL自动发送功能,可以及时把FATAL级的信息第一时间通知负责人 ,尽早排除错误,维护程序的正常运行有很大的作用。
但EMAIL有时也并不能及时到达负责人那里,如果能提花MSN的接口就好了,当然这是后话,不过我到是有这个想法,自己做个扩展Appender来实现。
LOG4J的输出方案里面提供了一个SMTPAppender,用来自动发送日志到指定的Email。但是到目前为止,最高的版本1.3Alpha,但是依然没有解决发送邮件时进行认识的问题,虽然需要增加几段简单的代码,但不明白那些大牛真的不知道还是没有功夫来改进这个功能,现在几乎所有的邮箱发送邮件都需要认证的。既然如此,我们只能自己来改进它了。
由于SMTPAppender的属性都是私有的,没有给我们留下继承的可能,所以我们选择直接从它的父类AppenderSkeleton来继承,然后把SMTPAppender的源代码全部COPY过来,增加如下EMAIL用户名、密码和是否需要认证的标记:
private String smtpUsername;
private String smtpPassword;
private String smtpAuth;
在activateOptions()方法中增加验证的代码:
if (smtpAuth != null && smtpAuth.trim().equals( " true " )) ... {
props.put("mail.smtp.auth", "true");
authenticator = new Authenticator() ...{
protected PasswordAuthentication getPasswordAuthentication() ...{
return new PasswordAuthentication(smtpUsername, smtpPassword);
}
};
}
// Session session = Session.getInstance(props, null);
Session session = Session.getInstance(props, authenticator);
如果发送的日志信息涉及到中文字符,还必须设定发送内容的编码,在sendBuffer()方法如修改设置content为如下所示,把编码方式指定为GB2312格式:
最后添加三个新加属性的GETTER和SETTER,全部源代码如下所示:
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.helpers.CyclicBuffer;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.spi.ErrorCode;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;
/** */ /**
* SMTP Appender扩展,增加对邮件认证的支持
*
* @author lenovo
*
*/
public class SMTPExtAppender extends AppenderSkeleton ... {
private String to;
private String from;
private String subject;
private String smtpHost;
// define auth info
private String smtpUsername;
private String smtpPassword;
private String smtpAuth;
// --------------------------
private int bufferSize = 512;
private boolean locationInfo = false;
protected CyclicBuffer cb = new CyclicBuffer(bufferSize);
protected Message msg;
protected TriggeringEventEvaluator evaluator;
/** *//**
* The default constructor will instantiate the appender with a
* {@link TriggeringEventEvaluator} that will trigger on events with level
* ERROR or higher.
*/
public SMTPExtAppender() ...{
this(new DefaultEvaluator());
}
/** *//**
* Use <code>evaluator</code> passed as parameter as the {@link
* TriggeringEventEvaluator} for this SMTPAppender.
*/
public SMTPExtAppender(TriggeringEventEvaluator evaluator) ...{
this.evaluator = evaluator;
}
/** *//**
* Activate the specified options, such as the smtp host, the recipient,
* from, etc.
*/
public void activateOptions() ...{
Properties props = new Properties(System.getProperties());
Authenticator authenticator = null;
if (smtpHost != null)
props.put("mail.smtp.host", smtpHost);
/**//* ADD auth code */
if (smtpAuth != null && smtpAuth.trim().equals("true")) ...{
props.put("mail.smtp.auth", "true");
authenticator = new Authenticator() ...{
protected PasswordAuthentication getPasswordAuthentication() ...{
return new PasswordAuthentication(smtpUsername, smtpPassword);
}
};
}
// Session session = Session.getInstance(props, null);
Session session = Session.getInstance(props, authenticator);
// session.setDebug(true);
msg = new MimeMessage(session);
try ...{
if (from != null)
msg.setFrom(getAddress(from));
else
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, parseAddress(to));
if (subject != null)
msg.setSubject(subject);
} catch (MessagingException e) ...{
LogLog.error("Could not activate SMTPAppender options.", e);
}
}
/** *//**
* Perform SMTPAppender specific appending actions, mainly adding the event
* to a cyclic buffer and checking if the event triggers an e-mail to be
* sent.
*/
public void append(LoggingEvent event) ...{
if (!checkEntryConditions()) ...{
return;
}
event.getThreadName();
event.getNDC();
if (locationInfo) ...{
event.getLocationInformation();
}
cb.add(event);
if (evaluator.isTriggeringEvent(event)) ...{
sendBuffer();
}
}
/** *//**
* This method determines if there is a sense in attempting to append.
*
* <p>
* It checks whether there is a set output target and also if there is a set
* layout. If these checks fail, then the boolean value <code>false</code>
* is returned.
*/
protected boolean checkEntryConditions() ...{
if (this.msg == null) ...{
errorHandler.error("Message object not configured.");
return false;
}
if (this.evaluator == null) ...{
errorHandler.error("No TriggeringEventEvaluator is set for appender [" + name + "].");
return false;
}
if (this.layout == null) ...{
errorHandler.error("No layout set for appender named [" + name + "].");
return false;
}
return true;
}
synchronized public void close() ...{
this.closed = true;
}
InternetAddress getAddress(String addressStr) ...{
try ...{
return new InternetAddress(addressStr);
} catch (AddressException e) ...{
errorHandler.error("Could not parse address [" + addressStr + "].", e, ErrorCode.ADDRESS_PARSE_FAILURE);
return null;
}
}
InternetAddress[] parseAddress(String addressStr) ...{
try ...{
return InternetAddress.parse(addressStr, true);
} catch (AddressException e) ...{
errorHandler.error("Could not parse address [" + addressStr + "].", e, ErrorCode.ADDRESS_PARSE_FAILURE);
return null;
}
}
/** *//**
* Returns value of the <b>To</b> option.
*/
public String getTo() ...{
return to;
}
/** *//**
* The <code>SMTPAppender</code> requires a {@link org.apache.log4j.Layout
* layout}.
*/
public boolean requiresLayout() ...{
return true;
}
/** *//**
* Send the contents of the cyclic buffer as an e-mail message.
*/
protected void sendBuffer() ...{
// Note: this code already owns the monitor for this
// appender. This frees us from needing to synchronize on 'cb'.
try ...{
MimeBodyPart part = new MimeBodyPart();
StringBuffer sbuf = new StringBuffer();
String t = layout.getHeader();
if (t != null)
sbuf.append(t);
int len = cb.length();
for (int i = 0; i < len; i++) ...{
// sbuf.append(MimeUtility.encodeText(layout.format(cb.get())));
LoggingEvent event = cb.get();
sbuf.append(layout.format(event));
if (layout.ignoresThrowable()) ...{
String[] s = event.getThrowableStrRep();
if (s != null) ...{
for (int j = 0; j < s.length; j++) ...{
sbuf.append(s[j]);
}
}
}
}
t = layout.getFooter();
if (t != null)
sbuf.append(t);
part.setContent(sbuf.toString(), layout.getContentType()+";charset=GB2312");
Multipart mp = new MimeMultipart();
mp.addBodyPart(part);
msg.setContent(mp );
msg.setSentDate(new Date());
Transport.send(msg);
} catch (Exception e) ...{
LogLog.error("Error occured while sending e-mail notification.", e);
}
}
/** *//**
* Returns value of the <b>EvaluatorClass</b> option.
*/
public String getEvaluatorClass() ...{
return evaluator == null ? null : evaluator.getClass().getName();
}
/** *//**
* Returns value of the <b>From</b> option.
*/
public String getFrom() ...{
return from;
}
/** *//**
* Returns value of the <b>Subject</b> option.
*/
public String getSubject() ...{
return subject;
}
/** *//**
* The <b>From</b> option takes a string value which should be a e-mail
* address of the sender.
*/
public void setFrom(String from) ...{
this.from = from;
}
/** *//**
* The <b>Subject</b> option takes a string value which should be a the
* subject of the e-mail message.
*/
public void setSubject(String subject) ...{
this.subject = subject;
}
/** *//**
* The <b>BufferSize</b> option takes a positive integer representing the
* maximum number of logging events to collect in a cyclic buffer. When the
* <code>BufferSize</code> is reached, oldest events are deleted as new
* events are added to the buffer. By default the size of the cyclic buffer
* is 512 events.
*/
public void setBufferSize(int bufferSize) ...{
this.bufferSize = bufferSize;
cb.resize(bufferSize);
}
/** *//**
* The <b>SMTPHost</b> option takes a string value which should be a the
* host name of the SMTP server that will send the e-mail message.
*/
public void setSMTPHost(String smtpHost) ...{
this.smtpHost = smtpHost;
}
/** *//**
* Returns value of the <b>SMTPHost</b> option.
*/
public String getSMTPHost() ...{
return smtpHost;
}
/** *//**
* The <b>To</b> option takes a string value which should be a comma
* separated list of e-mail address of the recipients.
*/
public void setTo(String to) ...{
this.to = to;
}
/** *//**
* Returns value of the <b>BufferSize</b> option.
*/
public int getBufferSize() ...{
return bufferSize;
}
/** *//**
* The <b>EvaluatorClass</b> option takes a string value representing the
* name of the class implementing the {@link TriggeringEventEvaluator}
* interface. A corresponding object will be instantiated and assigned as
* the triggering event evaluator for the SMTPAppender.
*/
public void setEvaluatorClass(String value) ...{
evaluator = (TriggeringEventEvaluator) OptionConverter.instantiateByClassName(value,
TriggeringEventEvaluator.class, evaluator);
}
/** *//**
* The <b>LocationInfo</b> option takes a boolean value. By default, it is
* set to false which means there will be no effort to extract the location
* information related to the event. As a result, the layout that formats
* the events as they are sent out in an e-mail is likely to place the wrong
* location information (if present in the format).
*
* <p>
* Location information extraction is comparatively very slow and should be
* avoided unless performance is not a concern.
*/
public void setLocationInfo(boolean locationInfo) ...{
this.locationInfo = locationInfo;
}
/** *//**
* Returns value of the <b>LocationInfo</b> option.
*/
public boolean getLocationInfo() ...{
return locationInfo;
}
public String getSMTPAuth() ...{
return smtpAuth;
}
/** *//**
* 设置是否进行SMTP认证。
*/
public void setSMTPAuth(String smtpAuth) ...{
this.smtpAuth = smtpAuth;
}
/** *//**
* Returns value of the <b>SMTPPassword</b> option.
*
* @return <b>SMTPPassword</b>
*/
public String getSMTPPassword() ...{
return smtpPassword;
}
/** *//**
* 设置访问SMTP服务器的密码。
*/
public void setSMTPPassword(String smtpPassword) ...{
this.smtpPassword = smtpPassword;
}
/** *//**
* Returns value of the <b>SMTPUsername</b> option.
*
* @return <b>SMTPUsername</b>
*/
public String getSMTPUsername() ...{
return smtpUsername;
}
/** *//**
* 设置访问SMTP服务器的用户名。
*/
public void setSMTPUsername(String smtpUsername) ...{
this.smtpUsername = smtpUsername;
}
}
class DefaultEvaluator implements TriggeringEventEvaluator ... {
/** *//**
* Is this <code>event</code> the e-mail triggering event?
*
* <p>
* This method returns <code>true</code>, if the event level has ERROR
* level or higher. Otherwise it returns <code>false</code>.
*/
public boolean isTriggeringEvent(LoggingEvent event) ...{
return event.getLevel().isGreaterOrEqual(Level.ERROR);
}
}
此时,你只需要加在配置文件中按如下方式设置输出方案即可:
#A6 send log info(ERROR or Fatal) by Email
log4j.appender.A6 = com.gftech.log4j.SMTPExtAppender
log4j.appender.A6.Threshold = FATAL
log4j.appender.A6.SMTPHost = smtp .126 .com
log4j.appender.A6.to = xxx@ 126 .com
log4j.appender.A6.from = xxx@ 126 .com
log4j.appender.A6.SMTPAuth = true
log4j.appender.A6.SMTPUsername = your name
log4j.appender.A6.SMTPPassword = your pwd
log4j.appender.A6.Subject = Log4J Message
log4j.appender.A6.layout = org.apache.log4j.PatternLayout
log4j.appender.A6.layout.ConversionPattern = [ %d{HH:mm:ss} ] [ %t ] %c - %-5p - %m%n
需要注意的是,LOG4J的SMTPAppender引用的是JAVAMAIL邮件发送API,所以在使用时首先把把mai.jar &activation.jar两个压缩包导入到工程中,一切OK,就可以自动收到日志的EMAIL通知了。
另外,在用Ant打包的时候,如果是mail.jar和activation.jar和你自己的程序打成一个JAR文件,可能会出现Security异常,因为没有把这两个JAR文件中MANIFEST。MF中的安全认证信息打入到新的JAR中的缘故。此时你需要在Build文件当中把mail.jar activation.jar中MANIFEST。MF的所有Name &SHA1-Digest信息指明:
< jar destfile ="${distDir}dp.jar" basedir ="${buildDir}" >
< manifest >
< attribute name ="Built-By" value ="sinboy" />
< attribute name ="Company" value ="PUSHGET.Inc" />
< attribute name ="Main-Class" value ="com.gftech.dp.run.DPMain" />
< section name ="javax/mail/search/SearchTerm.class" >
< attribute name ="SHA1-Digest" value ="SwGnDhIUmpZhfhq/FKkCQ9nD7ZE=" />
</ section >
< section name ="javax/mail/SendFailedException.class" >
< attribute name ="SHA1-Digest" value ="XdCEygaIZQB9YrH2WIr4nPRYYk0=" />
</ section >
< section name ="com/sun/mail/util/SocketFetcher.class" >
< attribute name ="SHA1-Digest" value ="t1zb5tdpmoyCI6yvj3rbVCaUQsg=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPTransport.class" >
< attribute name ="SHA1-Digest" value ="m7gR5cNHpfSkrnpb5eWLsBDfDMc=" />
</ section >
< section name ="javax/mail/internet/ParameterList$Value.class" >
< attribute name ="SHA1-Digest" value ="Ba14JX9tBBfIz8Z8mfIrms2/Tg0=" />
</ section >
< section name ="com/sun/mail/iap/ResponseHandler.class" >
< attribute name ="SHA1-Digest" value ="yGvfD66wKBii8T3I6EC433zQTr8=" />
</ section >
< section name ="javax/mail/StreamLoader.class" >
< attribute name ="SHA1-Digest" value ="N7B+7bTB0kXU/jTZLFyPtmBiClw=" />
</ section >
< section name ="javax/mail/PasswordAuthentication.class" >
< attribute name ="SHA1-Digest" value ="uIlizmGvEBXRyn9L38dAqkg85Zg=" />
</ section >
< section name ="javax/mail/event/ConnectionListener.class" >
< attribute name ="SHA1-Digest" value ="r9kShgKGnR+pVozJlq0cfrdoer8=" />
</ section >
< section name ="javax/mail/event/MessageCountEvent.class" >
< attribute name ="SHA1-Digest" value ="d/bi4YLUlTL9hTGgHkClSiVcn0A=" />
</ section >
< section name ="com/sun/mail/imap/protocol/FLAGS.class" >
< attribute name ="SHA1-Digest" value ="24lbvK78pA83CH1GNdcVjwzrLQk=" />
</ section >
< section name ="com/sun/mail/util/QEncoderStream.class" >
< attribute name ="SHA1-Digest" value ="RERq2YEAlJdRSASB1+/bRDUZ1jA=" />
</ section >
< section name ="javax/mail/internet/AsciiOutputStream.class" >
< attribute name ="SHA1-Digest" value ="p+y2kTfs8UNufg7ktfliwY20/2I=" />
</ section >
< section name ="javax/mail/Authenticator.class" >
< attribute name ="SHA1-Digest" value ="k3UFnUKoAt4IQtcdeEZtv+dm2Ds=" />
</ section >
< section name ="javax/mail/event/TransportEvent.class" >
< attribute name ="SHA1-Digest" value ="tnphK+ufr9sq8fbtt8GDX0mzeiE=" />
</ section >
< section name ="com/sun/mail/imap/Utility.class" >
< attribute name ="SHA1-Digest" value ="1D/KDAoDmWWgidnGn3sqI1PMFxk=" />
</ section >
< section name ="javax/mail/search/NotTerm.class" >
< attribute name ="SHA1-Digest" value ="shuAXO/kFNlu/TmHgH3+ypJUeDU=" />
</ section >
< section name ="com/sun/mail/iap/ParsingException.class" >
< attribute name ="SHA1-Digest" value ="7lhvqrFkYc9KjMaYjdnv0xifzys=" />
</ section >
< section name ="javax/mail/Transport.class" >
< attribute name ="SHA1-Digest" value ="Y37lZMHK7Jq7CXa3PYZWQrO7yWI=" />
</ section >
< section name ="com/sun/mail/imap/DefaultFolder$1.class" >
< attribute name ="SHA1-Digest" value ="j32w2xWJUrHuObIfVEOgvehwSYs=" />
</ section >
< section name ="javax/mail/internet/ParseException.class" >
< attribute name ="SHA1-Digest" value ="v4P7yGuAwE0DZupPQaSHaAdXS2U=" />
</ section >
< section name ="javax/mail/util/SharedByteArrayInputStream.class" >
< attribute name ="SHA1-Digest" value ="FWSJsKYWqxOtBYcrF3wUSQvH43s=" />
</ section >
< section name ="com/sun/mail/imap/DefaultFolder$2.class" >
< attribute name ="SHA1-Digest" value ="VGh1qpsH4KmYaCFfsAWwlVAYcsY=" />
</ section >
< section name ="javax/mail/search/FromStringTerm.class" >
< attribute name ="SHA1-Digest" value ="BQY0XuBFVGCvEGAViY3HmVVM+cA=" />
</ section >
< section name ="javax/mail/MessageContext.class" >
< attribute name ="SHA1-Digest" value ="tJn3GN4+TAzDBPblIFDcIy3/bdU=" />
</ section >
< section name ="javax/mail/search/IntegerComparisonTerm.class" >
< attribute name ="SHA1-Digest" value ="Agg/d9pMeLnCLSEaCtbRelYYDfg=" />
</ section >
< section name ="javax/mail/search/MessageNumberTerm.class" >
< attribute name ="SHA1-Digest" value ="alYBxQrpbhZ6q0rBpl2/lvlx7GA=" />
</ section >
< section name ="javax/mail/FolderClosedException.class" >
< attribute name ="SHA1-Digest" value ="vYhnfKiXn2YoGyvHz+tguTfaIP0=" />
</ section >
< section name ="com/sun/mail/imap/AppendUID.class" >
< attribute name ="SHA1-Digest" value ="SLK9LVlF1fbl1V8CpPCSKZoT1Uw=" />
</ section >
< section name ="javax/mail/Part.class" >
< attribute name ="SHA1-Digest" value ="v8Ntk2UFlvj+LmGQ9XmkhnoHcy4=" />
</ section >
< section name ="javax/mail/internet/ContentDisposition.class" >
< attribute name ="SHA1-Digest" value ="/IeyuioYjDEmpU9R67nV6MW2baw=" />
</ section >
< section name ="com/sun/mail/util/BEncoderStream.class" >
< attribute name ="SHA1-Digest" value ="RCczqyNFbrCIw4exyiaRL4S8//E=" />
</ section >
< section name ="com/sun/mail/imap/Rights.class" >
< attribute name ="SHA1-Digest" value ="25nkoJpUi/dSVu+3LW4gFxTKPTE=" />
</ section >
< section name ="javax/mail/search/SizeTerm.class" >
< attribute name ="SHA1-Digest" value ="VQU+xieSmnW6IKCZbxBGAGO72FI=" />
</ section >
< section name ="javax/mail/internet/HeaderTokenizer.class" >
< attribute name ="SHA1-Digest" value ="yqLVRsECSE3/XMcUvqgm3KQKrqY=" />
</ section >
< section name ="javax/mail/Address.class" >
< attribute name ="SHA1-Digest" value ="F0NqT2KxW+1J8lD0omnP9+w4gu4=" />
</ section >
< section name ="javax/mail/Quota$Resource.class" >
< attribute name ="SHA1-Digest" value ="4lI7yvUMS+i6fp+KBNVcdystC4U=" />
</ section >
< section name ="com/sun/mail/imap/IMAPMessage.class" >
< attribute name ="SHA1-Digest" value ="rWS3NNtpiIh+RyFphG41OUrBf30=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPSendFailedException.class" >
< attribute name ="SHA1-Digest" value ="Vbu794NrfTM/9wRntXvoEiHyWU4=" />
</ section >
< section name ="com/sun/mail/iap/LiteralException.class" >
< attribute name ="SHA1-Digest" value ="k+vUzyDJboXXMQhihHHTH2rJxsA=" />
</ section >
< section name ="javax/mail/internet/MailDateFormat.class" >
< attribute name ="SHA1-Digest" value ="+kruG7hFxllbZyh9E99k1Kd3P/Q=" />
</ section >
< section name ="com/sun/mail/util/TraceOutputStream.class" >
< attribute name ="SHA1-Digest" value ="KahCJLc2hA4anc7AuBYGfRZ1tOM=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPSSLTransport.class" >
< attribute name ="SHA1-Digest" value ="6U1CnwlO4l/cdSgmZzSpwNKl8EM=" />
</ section >
< section name ="javax/mail/event/MessageCountAdapter.class" >
< attribute name ="SHA1-Digest" value ="HvTYZB0DcHn/CFdbKenl1+3v5Sk=" />
</ section >
< section name ="com/sun/mail/util/UUDecoderStream.class" >
< attribute name ="SHA1-Digest" value ="+Wb2QOPVh4TRngNVqjtEzhsMhqc=" />
</ section >
< section name ="com/sun/mail/util/CRLFOutputStream.class" >
< attribute name ="SHA1-Digest" value ="nR7HVOvNjd3ayK53T8sO5mwM5yQ=" />
</ section >
< section name ="com/sun/mail/util/LineOutputStream.class" >
< attribute name ="SHA1-Digest" value ="jWkOmR0BbPRldQEj7G//xddq9Po=" />
</ section >
< section name ="com/sun/mail/pop3/SharedByteArrayOutputStream.class" >
< attribute name ="SHA1-Digest" value ="jkrt4GJ8/IM29mg9mQyLcxCY120=" />
</ section >
< section name ="com/sun/mail/imap/protocol/INTERNALDATE.class" >
< attribute name ="SHA1-Digest" value ="OqU9Z7ln6JrVZ58ohm6Ocx1J8vs=" />
</ section >
< section name ="javax/mail/ReadOnlyFolderException.class" >
< attribute name ="SHA1-Digest" value ="EjoXZIVbzRayE7vGgZYw8bFqAZI=" />
</ section >
< section name ="javax/mail/MessagingException.class" >
< attribute name ="SHA1-Digest" value ="1rm4zZYMd44J3zuiUslO5YaDy0E=" />
</ section >
< section name ="com/sun/mail/iap/ResponseInputStream.class" >
< attribute name ="SHA1-Digest" value ="GiRkycsTxtR567cZA8joTaFi+Ys=" />
</ section >
< section name ="com/sun/mail/pop3/Protocol.class" >
< attribute name ="SHA1-Digest" value ="5/PoznIV6yAFCZaAa0bJBpy8Zaw=" />
</ section >
< section name ="javax/mail/internet/ParameterList.class" >
< attribute name ="SHA1-Digest" value ="s4OQRwSPP4stt14uzW5PUIe0Y7g=" />
</ section >
< section name ="com/sun/mail/imap/protocol/IMAPAddress.class" >
< attribute name ="SHA1-Digest" value ="x4IZM0hO4K5454CViPWheuJLPWs=" />
</ section >
< section name ="com/sun/mail/imap/IMAPNestedMessage.class" >
< attribute name ="SHA1-Digest" value ="q7iSelvjmet+Dgee9o80/XlS/Nk=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$8.class" >
< attribute name ="SHA1-Digest" value ="NCnDNVxAzVd4+qFXHW+UPsNQtrQ=" />
</ section >
< section name ="javax/mail/Service.class" >
< attribute name ="SHA1-Digest" value ="E9JdtYtLsOJugORGBd5rY32gqOU=" />
</ section >
< section name ="com/sun/mail/imap/protocol/FetchResponse.class" >
< attribute name ="SHA1-Digest" value ="AUVCzHOTr4SqTNs/zVtHLt6wUoY=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$9.class" >
< attribute name ="SHA1-Digest" value ="Qnbi4cEe9Qkmcu7KJUT/NsrPVI4=" />
</ section >
< section name ="javax/mail/internet/InternetHeaders$matchEnum.class" >
< attribute name ="SHA1-Digest" value ="S0qWuwt1zjRA8+2MZ9FzHlKdqeY=" />
</ section >
< section name ="com/sun/mail/imap/protocol/BODY.class" >
< attribute name ="SHA1-Digest" value ="2tbY3A3j+m4RxkUWtD0XCYdNY3c=" />
</ section >
< section name ="javax/mail/Session$5.class" >
< attribute name ="SHA1-Digest" value ="FBdDiCuPRTFgx+jUzolhqP+uY4E=" />
</ section >
< section name ="com/sun/mail/imap/IMAPSSLStore.class" >
< attribute name ="SHA1-Digest" value ="sfXvpQ/UPJtPREc0+LCbmMBil+8=" />
</ section >
< section name ="javax/mail/search/OrTerm.class" >
< attribute name ="SHA1-Digest" value ="yg3h4Rxh5CZkkdooxp+sG0PpzmY=" />
</ section >
< section name ="javax/mail/search/ComparisonTerm.class" >
< attribute name ="SHA1-Digest" value ="L7Yiwqtu072QHMQKA9InH4v2HGU=" />
</ section >
< section name ="javax/mail/internet/MimeMessage$RecipientType.class" >
< attribute name ="SHA1-Digest" value ="mfT1n4tOAu8ypXfrNG1m/SDXVVg=" />
</ section >
< section name ="javax/mail/Session$6.class" >
< attribute name ="SHA1-Digest" value ="Joo7rO6tUOSLZN/8miuRuUQ+24s=" />
</ section >
< section name ="javax/mail/AuthenticationFailedException.class" >
< attribute name ="SHA1-Digest" value ="I1625Jhgvl2oJ9a/02NjeVmkHdo=" />
</ section >
< section name ="com/sun/mail/imap/Utility$Condition.class" >
< attribute name ="SHA1-Digest" value ="8NsldZIZXDNbzlM9+p70Kn4sM5U=" />
</ section >
< section name ="com/sun/mail/imap/protocol/MailboxInfo.class" >
< attribute name ="SHA1-Digest" value ="fHUgeJxgcJOXa9MM7ODLg02SlEg=" />
</ section >
< section name ="javax/mail/Session$7.class" >
< attribute name ="SHA1-Digest" value ="vRzS94dOXlCYlXCzgDG3doY2Tr0=" />
</ section >
< section name ="com/sun/mail/handlers/multipart_mixed.class" >
< attribute name ="SHA1-Digest" value ="+qsWpTL6/4oDwuWPwKA75EStKjA=" />
</ section >
< section name ="com/sun/mail/pop3/POP3SSLStore.class" >
< attribute name ="SHA1-Digest" value ="5yzvlE7d7Aw4SyP8EaKrojXDX3Y=" />
</ section >
< section name ="com/sun/mail/pop3/POP3Folder.class" >
< attribute name ="SHA1-Digest" value ="d+8iiqO13asArUbv7FS3EUMVf3k=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$6.class" >
< attribute name ="SHA1-Digest" value ="NRrkXkmS0ZSFdFBzaZozv5w2cW4=" />
</ section >
< section name ="com/sun/mail/imap/DefaultFolder.class" >
< attribute name ="SHA1-Digest" value ="3q24N9NENff+yXuTtIu7ZGx4qn4=" />
</ section >
< section name ="javax/mail/QuotaAwareStore.class" >
< attribute name ="SHA1-Digest" value ="IZLYiL3EQAOF/IbDfod+LApLwNM=" />
</ section >
< section name ="com/sun/mail/util/ASCIIUtility.class" >
< attribute name ="SHA1-Digest" value ="CMrJ7jaTOyOPrwiYX0ZBPWVW7ro=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$7.class" >
< attribute name ="SHA1-Digest" value ="+QsnrLRR3Wt2dVmBV7yM+IjT9AU=" />
</ section >
< section name ="javax/mail/search/AddressTerm.class" >
< attribute name ="SHA1-Digest" value ="/jaEC3NoAkYzg1xa4h8ZdXuuTd4=" />
</ section >
< section name ="com/sun/mail/pop3/POP3Message.class" >
< attribute name ="SHA1-Digest" value ="+vA0SHytAwpc7YdRyNpux2pwizA=" />
</ section >
< section name ="com/sun/mail/util/BASE64DecoderStream.class" >
< attribute name ="SHA1-Digest" value ="RFSwdy1TaIsT+5d4vaRBrwq27+o=" />
</ section >
< section name ="javax/mail/internet/MailDateParser.class" >
< attribute name ="SHA1-Digest" value ="lIkScp3/P2jWfHkMF6YM6Dl9uWY=" />
</ section >
< section name ="javax/mail/util/SharedFileInputStream$SharedFile.class" >
< attribute name ="SHA1-Digest" value ="AH+LilDol1KlaI3dJjnTba7AURw=" />
</ section >
< section name ="javax/mail/Session$3.class" >
< attribute name ="SHA1-Digest" value ="8lQ7jGQ3bIZdy+C90142yYnhZWA=" />
</ section >
< section name ="javax/mail/Multipart.class" >
< attribute name ="SHA1-Digest" value ="LeNxzsAMZVcJOno0atpa0kjAgS8=" />
</ section >
< section name ="javax/mail/internet/MimePart.class" >
< attribute name ="SHA1-Digest" value ="ZfiU0V88g9bAM4ciN0v0MV+vbuo=" />
</ section >
< section name ="javax/mail/Folder$TerminatorEvent.class" >
< attribute name ="SHA1-Digest" value ="aewfzfq4RnH0sjhghnJI2wn/o6Q=" />
</ section >
< section name ="com/sun/mail/imap/protocol/Namespaces.class" >
< attribute name ="SHA1-Digest" value ="8nWrw5x/n8XSImF+k5byg1HGpYg=" />
</ section >
< section name ="javax/mail/internet/UniqueValue.class" >
< attribute name ="SHA1-Digest" value ="mKfhPmIxaYb399Wv+BVEOHZt8FY=" />
</ section >
< section name ="javax/mail/Session$4.class" >
< attribute name ="SHA1-Digest" value ="U8QyRwul2hu824mF9cUvGrBUFe0=" />
</ section >
< section name ="com/sun/mail/pop3/Response.class" >
< attribute name ="SHA1-Digest" value ="+aAu+JdeCVY0h1mjHfCNWABM37Q=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$3.class" >
< attribute name ="SHA1-Digest" value ="4we1LKF7W2JytseheS1g0nUgkL8=" />
</ section >
< section name ="javax/mail/internet/MimeUtility.class" >
< attribute name ="SHA1-Digest" value ="JjlO7asnqVITwCfVrbA1STgXz6A=" />
</ section >
< section name ="javax/mail/internet/SharedInputStream.class" >
< attribute name ="SHA1-Digest" value ="cd1RnW9/RIsq6sqHpaSduNjlYEI=" />
</ section >
< section name ="com/sun/mail/iap/ConnectionException.class" >
< attribute name ="SHA1-Digest" value ="tQxsOOqed968o8ZOOypAwjBElcM=" />
</ section >
< section name ="javax/mail/event/TransportListener.class" >
< attribute name ="SHA1-Digest" value ="gQ1Z41tJDKnIXydxMeSllBIZS3g=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$4.class" >
< attribute name ="SHA1-Digest" value ="A4wsFdQfqGLKc/O2odaxNY7FFp4=" />
</ section >
< section name ="com/sun/mail/imap/protocol/ListInfo.class" >
< attribute name ="SHA1-Digest" value ="T/VMdqBM12ac1UiOvMqNMdQOAzE=" />
</ section >
< section name ="javax/mail/internet/ParameterList$ParamEnum.class" >
< attribute name ="SHA1-Digest" value ="iUN133n7SUEqaGgr7TEtEJ/b5/s=" />
</ section >
< section name ="com/sun/mail/handlers/message_rfc822.class" >
< attribute name ="SHA1-Digest" value ="rd1N1+wdjK8QarQwz3yDBIhqOfM=" />
</ section >
< section name ="com/sun/mail/imap/protocol/SearchSequence.class" >
< attribute name ="SHA1-Digest" value ="7bZKdWN1ueHm3aMPL3dlc1l19hU=" />
</ section >
< section name ="javax/mail/search/ReceivedDateTerm.class" >
< attribute name ="SHA1-Digest" value ="M3fCMCt3CO1xA6u07F+nsU853tE=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$17.class" >
< attribute name ="SHA1-Digest" value ="qpIhBkn5vMyVrbo8+QhdlKEqDTY=" />
</ section >
< section name ="com/sun/mail/iap/ByteArray.class" >
< attribute name ="SHA1-Digest" value ="UYEtyuO19ytNZ48M2wYWRdHwx+E=" />
</ section >
< section name ="javax/mail/search/RecipientStringTerm.class" >
< attribute name ="SHA1-Digest" value ="MRcnLcCXpcSo2oDVpyVwWTemYko=" />
</ section >
< section name ="javax/mail/event/MessageChangedEvent.class" >
< attribute name ="SHA1-Digest" value ="8CU6Wnq+3ja6TXnZFYRgkXUtiTU=" />
</ section >
< section name ="javax/mail/internet/MimeMessage.class" >
< attribute name ="SHA1-Digest" value ="b7Tj4xackzVl0stsHYCjnzX1axM=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$5.class" >
< attribute name ="SHA1-Digest" value ="nv1Jam2kffa50ksm/6zYFPcINsI=" />
</ section >
< section name ="javax/mail/search/BodyTerm.class" >
< attribute name ="SHA1-Digest" value ="qmMvZum/txPI7r3J0FBWrJKrMTA=" />
</ section >
< section name ="javax/mail/internet/MimeUtility$1$NullInputStream.class" >
< attribute name ="SHA1-Digest" value ="JJqErfrREMxAZRJmVnSjUesoHfY=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$18.class" >
< attribute name ="SHA1-Digest" value ="UFNk31lbEhl0XsCYppoyQeElBQc=" />
</ section >
< section name ="javax/mail/Session$1.class" >
< attribute name ="SHA1-Digest" value ="QwGMplNAXcUCRnRl4u51LY51XwY=" />
</ section >
< section name ="com/sun/mail/handlers/text_xml.class" >
< attribute name ="SHA1-Digest" value ="nS6uUygQlvCN0c/9SkUn4HLUjPg=" />
</ section >
< section name ="com/sun/mail/imap/protocol/MessageSet.class" >
< attribute name ="SHA1-Digest" value ="61RYkwDm5QMJaiYQ63jInOSGLJk=" />
</ section >
< section name ="javax/mail/Header.class" >
< attribute name ="SHA1-Digest" value ="Tp0KFn1OXdK19kwSyOPMfsEKfrk=" />
</ section >
< section name ="javax/mail/event/StoreEvent.class" >
< attribute name ="SHA1-Digest" value ="RYsdWisFbk2MNW/9JPOHrj0VyKM=" />
</ section >
< section name ="javax/mail/event/FolderListener.class" >
< attribute name ="SHA1-Digest" value ="MZh1iWbs74JoI7+NGpluKyaNJgo=" />
</ section >
< section name ="com/sun/mail/pop3/DefaultFolder.class" >
< attribute name ="SHA1-Digest" value ="V+mB7aIDJOH9jxToux/1eEhuLHw=" />
</ section >
< section name ="javax/mail/Session$2.class" >
< attribute name ="SHA1-Digest" value ="6kZVG4oi02AtC5dvLbUS0WT1mVM=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$1.class" >
< attribute name ="SHA1-Digest" value ="QzcphzG38nU+rM0vIPvw4pFDUuM=" />
</ section >
< section name ="com/sun/mail/iap/Literal.class" >
< attribute name ="SHA1-Digest" value ="tvJ76lsZrZ0AzIaZZXC4eGoWStw=" />
</ section >
< section name ="com/sun/mail/handlers/image_jpeg.class" >
< attribute name ="SHA1-Digest" value ="qy4H8xonRBzZ2cMwAKsrTc2ZLgY=" />
</ section >
< section name ="javax/mail/Folder.class" >
< attribute name ="SHA1-Digest" value ="sF77xp8LsPyKSW7p73nbPSvxd7M=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$2.class" >
< attribute name ="SHA1-Digest" value ="a4ts23Bw+zsUWTd+COuzmorWVoA=" />
</ section >
< section name ="javax/mail/Session.class" >
< attribute name ="SHA1-Digest" value ="7ROzRaA5HLOqmJcdr+ugMjA68vA=" />
</ section >
< section name ="javax/mail/search/MessageIDTerm.class" >
< attribute name ="SHA1-Digest" value ="9egi1cBrGxCnAT/nt2c2vsqmGGA=" />
</ section >
< section name ="com/sun/mail/imap/protocol/RFC822SIZE.class" >
< attribute name ="SHA1-Digest" value ="d/wTUExj4/HBSszeWp3ZKR5mMTY=" />
</ section >
< section name ="com/sun/mail/imap/IMAPStore$ConnectionPool.class" >
< attribute name ="SHA1-Digest" value ="Co5a5aIqP+tCLxqDwHLeu4r9VVY=" />
</ section >
< section name ="javax/mail/search/RecipientTerm.class" >
< attribute name ="SHA1-Digest" value ="6WjFJTB1+tm/vzYvVINjLIR0wBg=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$15.class" >
< attribute name ="SHA1-Digest" value ="iUzgOfHNHUPcdxlwlbmAj8Tlu+w=" />
</ section >
< section name ="com/sun/mail/imap/protocol/Namespaces$Namespace.class" >
< attribute name ="SHA1-Digest" value ="SH+KknJPgZyoVVg/GEEUbt5oZ1o=" />
</ section >
< section name ="javax/mail/MessageAware.class" >
< attribute name ="SHA1-Digest" value ="nI/sDijZ/+Rd8xB8oDMgoroD5kk=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$16.class" >
< attribute name ="SHA1-Digest" value ="uX/2zXcT60bxHYjrajs0SIg+4jE=" />
</ section >
< section name ="javax/mail/internet/InternetHeaders.class" >
< attribute name ="SHA1-Digest" value ="KknmShCiuWLp5GMAEV7i5agodxI=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder.class" >
< attribute name ="SHA1-Digest" value ="9GRKs5fE8f2Db9W7rX5Fizel1Qw=" />
</ section >
< section name ="com/sun/mail/util/QPDecoderStream.class" >
< attribute name ="SHA1-Digest" value ="GlKSBEPZpgNov/H6YChPswTTYiE=" />
</ section >
< section name ="javax/mail/search/AndTerm.class" >
< attribute name ="SHA1-Digest" value ="FXr1XsdDoLz0Kk00/ddHINkQX30=" />
</ section >
< section name ="com/sun/mail/imap/IMAPBodyPart.class" >
< attribute name ="SHA1-Digest" value ="wr7JtYG7pkJtACY+v3Ypc8F4gJ4=" />
</ section >
< section name ="com/sun/mail/pop3/Status.class" >
< attribute name ="SHA1-Digest" value ="HK+jHY/UPJLbwafgDLfgFgEMitA=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$12.class" >
< attribute name ="SHA1-Digest" value ="eQAb0jIP39pQ0oVflgNq5/HZZr8=" />
</ section >
< section name ="com/sun/mail/imap/LengthCounter.class" >
< attribute name ="SHA1-Digest" value ="lfcMll/fvG13i/h2Cu9LgSClk0s=" />
</ section >
< section name ="javax/mail/search/FromTerm.class" >
< attribute name ="SHA1-Digest" value ="FAD9Tuc6edC7o9nlaUpklmeXlSE=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$ProtocolCommand.class" >
< attribute name ="SHA1-Digest" value ="2u3M2HaXIjC+bInGSGNqMS2ynzc=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$13.class" >
< attribute name ="SHA1-Digest" value ="ZeI0kxj++3P1kC+lC1xlC55IcZ8=" />
</ section >
< section name ="javax/mail/internet/ContentType.class" >
< attribute name ="SHA1-Digest" value ="BIrWtJl6qDZGevNd4scZxlONoEY=" />
</ section >
< section name ="com/sun/mail/iap/Protocol.class" >
< attribute name ="SHA1-Digest" value ="sAMrCVpFeZfDY2HnjV1KyGn062o=" />
</ section >
< section name ="javax/mail/event/MessageCountListener.class" >
< attribute name ="SHA1-Digest" value ="EQlK4ADnuMCdSbQsKVox8Wj+GGA=" />
</ section >
< section name ="com/sun/mail/iap/ProtocolException.class" >
< attribute name ="SHA1-Digest" value ="aS53TMp0sSzRykAizGbMKcW9sHA=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$14.class" >
< attribute name ="SHA1-Digest" value ="aOjumhds151EPKnQw5L9L6V3orY=" />
</ section >
< section name ="javax/mail/Provider.class" >
< attribute name ="SHA1-Digest" value ="zX4cU1LcZd+MZvhliK62SIjxZvg=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPOutputStream.class" >
< attribute name ="SHA1-Digest" value ="secQWppiEIWfToC6tuZYICahrI0=" />
</ section >
< section name ="com/sun/mail/imap/protocol/Item.class" >
< attribute name ="SHA1-Digest" value ="U7m6WKKNaP+2fUkSWH4vHi0OBBU=" />
</ section >
< section name ="com/sun/mail/imap/IMAPMultipartDataSource.class" >
< attribute name ="SHA1-Digest" value ="c0BlZB/wrBzmCGtLhdmBPlKXyBk=" />
</ section >
< section name ="com/sun/mail/imap/ACL.class" >
< attribute name ="SHA1-Digest" value ="3ib48HeOKm4mCNfy+yYi5citejc=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPMessage.class" >
< attribute name ="SHA1-Digest" value ="J1lB13Paab7cgiQGrwUyH2uqF9s=" />
</ section >
< section name ="javax/mail/internet/ParameterList$1.class" >
< attribute name ="SHA1-Digest" value ="DVj/kfl4EYJJTUpQ8GL/Km8t4m8=" />
</ section >
< section name ="javax/mail/EventQueue$QueueElement.class" >
< attribute name ="SHA1-Digest" value ="YzB4vyzKWve/UP5OlE4QpY7zPv8=" />
</ section >
< section name ="com/sun/mail/imap/protocol/IMAPProtocol.class" >
< attribute name ="SHA1-Digest" value ="ed1CUYQ1LXzsF/fH+XDRFNXSBcQ=" />
</ section >
< section name ="javax/mail/search/SentDateTerm.class" >
< attribute name ="SHA1-Digest" value ="pCSzQTcy2sz7hWMjHemera3BVJQ=" />
</ section >
< section name ="com/sun/mail/handlers/text_plain.class" >
< attribute name ="SHA1-Digest" value ="q8z9PKsDB8rhAxBgECnRl36HfP4=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$FetchProfileItem.class" >
< attribute name ="SHA1-Digest" value ="NPZU6nZmCgh3SjsdE8b9/etsepE=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$10.class" >
< attribute name ="SHA1-Digest" value ="jwrPFcH82eeFDVb9Xw6FH2KMeWw=" />
</ section >
< section name ="javax/mail/event/MessageChangedListener.class" >
< attribute name ="SHA1-Digest" value ="D9QKAsUJJ2kq8fPlK2kcFLRusnY=" />
</ section >
< section name ="com/sun/mail/util/QDecoderStream.class" >
< attribute name ="SHA1-Digest" value ="Qaz21LH8xYCJipPxldlVhokeDSw=" />
</ section >
< section name ="com/sun/mail/imap/MessageLiteral.class" >
< attribute name ="SHA1-Digest" value ="a+wMVNjGzKFSBP1v3Xg4hB01tEk=" />
</ section >
< section name ="com/sun/mail/imap/IMAPFolder$11.class" >
< attribute name ="SHA1-Digest" value ="XMi+TWShZEz/biwiaLjAL/ERU44=" />
</ section >
< section name ="com/sun/mail/util/UUEncoderStream.class" >
< attribute name ="SHA1-Digest" value ="HLgw/1ANzn4MsRp+KGoDh/aOF14=" />
</ section >
< section name ="com/sun/mail/imap/IMAPMessage$1$FetchProfileCondition.class" >
< attribute name ="SHA1-Digest" value ="g9ndX1sBK93FQxoyLJhXNV6TkUE=" />
</ section >
< section name ="com/sun/mail/imap/protocol/BASE64MailboxEncoder.class" >
< attribute name ="SHA1-Digest" value ="7VvSMvnYBePvZUaQWxIYjfnE54Q=" />
</ section >
< section name ="com/sun/mail/imap/protocol/ENVELOPE.class" >
< attribute name ="SHA1-Digest" value ="pKW6BmVf9tT8STL+nCw36hW9WA8=" />
</ section >
< section name ="javax/mail/internet/AddressException.class" >
< attribute name ="SHA1-Digest" value ="rdIfPvxpIrwDNszgXHiuOMJCaeE=" />
</ section >
< section name ="javax/mail/internet/NewsAddress.class" >
< attribute name ="SHA1-Digest" value ="0RbSRXjy/gj/s7DpiXSWisbixlc=" />
</ section >
< section name ="javax/mail/search/HeaderTerm.class" >
< attribute name ="SHA1-Digest" value ="X9uJjZYjHERz9ZdC0dUTIb5KedY=" />
</ section >
< section name ="javax/mail/MethodNotSupportedException.class" >
< attribute name ="SHA1-Digest" value ="FNncwEsBkvqe+2a/oQF1sl7ccPM=" />
</ section >
< section name ="javax/mail/event/FolderAdapter.class" >
< attribute name ="SHA1-Digest" value ="QOzL0f5QmfUgthxBvcuvn7OAPC4=" />
</ section >
< section name ="com/sun/mail/smtp/DigestMD5.class" >
< attribute name ="SHA1-Digest" value ="4r/Ss01jh3wwscXF9my9+mWRJgg=" />
</ section >
< section name ="com/sun/mail/util/TraceInputStream.class" >
< attribute name ="SHA1-Digest" value ="36C2Lvq6hgS3APkj6CmrosHD1g0=" />
</ section >
< section name ="com/sun/mail/imap/IMAPInputStream.class" >
< attribute name ="SHA1-Digest" value ="FByI8BkvTMYyifD3Vn9ukuC0afM=" />
</ section >
< section name ="com/sun/mail/imap/protocol/SaslAuthenticator.class" >
< attribute name ="SHA1-Digest" value ="U1o7oNJkmyWAxotKR1Z9KWJ35S0=" />
</ section >
< section name ="javax/mail/Quota.class" >
< attribute name ="SHA1-Digest" value ="BefUmGUGIxJmfMR5yAq2BCnb/o8=" />
</ section >
< section name ="javax/mail/FetchProfile.class" >
< attribute name ="SHA1-Digest" value ="pCxWa9PHRB1Ba5iLNVjHp4xshZU=" />
</ section >
< section name ="javax/mail/StoreClosedException.class" >
< attribute name ="SHA1-Digest" value ="Z2w7c3FuBJY92Bc8JcwxG+Aa/aI=" />
</ section >
< section name ="javax/mail/Message$RecipientType.class" >
< attribute name ="SHA1-Digest" value ="ud6/FfcF4GL+BCrg6uxGToYYPx4=" />
</ section >
< section name ="javax/mail/FolderNotFoundException.class" >
< attribute name ="SHA1-Digest" value ="vOgb45rQqgvV6/mw6oh0C1EwNIk=" />
</ section >
< section name ="com/sun/mail/iap/Response.class" >
< attribute name ="SHA1-Digest" value ="gBjBHfi0bhs5w23c68FxDRWHElM=" />
</ section >
< section name ="javax/mail/util/SharedFileInputStream.class" >
< attribute name ="SHA1-Digest" value ="Hq+4GYAn/igg71Nyt55oJwFL9DU=" />
</ section >
< section name ="javax/mail/Flags$Flag.class" >
< attribute name ="SHA1-Digest" value ="QrLFDDYVpCPYaz8DQ7UdId6KbRo=" />
</ section >
< section name ="javax/mail/search/FlagTerm.class" >
< attribute name ="SHA1-Digest" value ="0SVtJdfKnF4N/WKZl9av9pOfcqs=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPAddressFailedException.class" >
< attribute name ="SHA1-Digest" value ="WmMbJ3T6vjQyoCE7v8S6j0YcIFE=" />
</ section >
< section name ="com/sun/mail/handlers/image_gif.class" >
< attribute name ="SHA1-Digest" value ="7CSX5dBrzDXgNRkc2nDKUw15OeM=" />
</ section >
< section name ="com/sun/mail/imap/protocol/BASE64MailboxDecoder.class" >
< attribute name ="SHA1-Digest" value ="IiqDB3niZd4eR+2tExKHyxmKctc=" />
</ section >
< section name ="com/sun/mail/imap/protocol/IMAPResponse.class" >
< attribute name ="SHA1-Digest" value ="7vtxkTz9lBhRupmX+VD3uTQuf3g=" />
</ section >
< section name ="com/sun/mail/imap/protocol/IMAPSaslAuthenticator.class" >
< attribute name ="SHA1-Digest" value ="oohscPGAJ8VoiQHN0oxN/eTO0m8=" />
</ section >
< section name ="com/sun/mail/util/SocketFetcher$1.class" >
< attribute name ="SHA1-Digest" value ="2kLFfvQxcA8ZaQfBj8uABDhBOAE=" />
</ section >
< section name ="com/sun/mail/imap/protocol/RFC822DATA.class" >
< attribute name ="SHA1-Digest" value ="w/3IrNCVBa9dfYow6KHmRd5y6Hs=" />
</ section >
< section name ="javax/mail/NoSuchProviderException.class" >
< attribute name ="SHA1-Digest" value ="aA04S+g3cUIV8ySRbqdjrlryMMs=" />
</ section >
< section name ="javax/mail/internet/MimeBodyPart.class" >
< attribute name ="SHA1-Digest" value ="0up2Ns2hZiQTGvE28APExnoeX5k=" />
</ section >
< section name ="com/sun/mail/imap/protocol/IMAPSaslAuthenticator$1.class" >
< attribute name ="SHA1-Digest" value ="9NXMiSXd1Q27l4Av8hPKbl08dIE=" />
</ section >
< section name ="com/sun/mail/imap/protocol/UIDSet.class" >
< attribute name ="SHA1-Digest" value ="B9jTyIvA1QCO2Zo0sok0DLoOT7I=" />
</ section >
< section name ="com/sun/mail/imap/protocol/Status.class" >
< attribute name ="SHA1-Digest" value ="F/A02l8RCs8uecTQ9ec7mscI/Fw=" />
</ section >
< section name ="com/sun/mail/imap/IMAPStore.class" >
< attribute name ="SHA1-Digest" value ="nk/MnGmli6BlIW/kqlL0gr8NI14=" />
</ section >
< section name ="javax/mail/event/ConnectionEvent.class" >
< attribute name ="SHA1-Digest" value ="k9ZjUM10hLx0uf1fkYCLo57RAAc=" />
</ section >
< section name ="javax/mail/event/MailEvent.class" >
< attribute name ="SHA1-Digest" value ="vJQSZ8c8aPuCyOVJqNqfqkRIXr4=" />
</ section >
< section name ="javax/mail/event/StoreListener.class" >
< attribute name ="SHA1-Digest" value ="lNLCbgFp1AT0am8Vpa9l2XEt7rs=" />
</ section >
< section name ="com/sun/mail/iap/AString.class" >
< attribute name ="SHA1-Digest" value ="dFYlMsn8CgJscFan4kbUKhyHFKE=" />
</ section >
< section name ="javax/mail/util/ByteArrayDataSource.class" >
< attribute name ="SHA1-Digest" value ="MU7nCHaJEzScD0+lksSuVJBduPA=" />
</ section >
< section name ="javax/mail/EventQueue.class" >
< attribute name ="SHA1-Digest" value ="7VvrIc9DCpdMfIjDA0k+J3OuKRg=" />
</ section >
< section name ="javax/mail/event/FolderEvent.class" >
< attribute name ="SHA1-Digest" value ="MyPd9ieGa7nHg4LN8xoa0gysDQs=" />
</ section >
< section name ="com/sun/mail/iap/Atom.class" >
< attribute name ="SHA1-Digest" value ="IBC+RMxHyMbbwp5Nt4dlCAXqW4I=" />
</ section >
< section name ="com/sun/mail/util/BASE64EncoderStream.class" >
< attribute name ="SHA1-Digest" value ="OZg+IN66NPGpwAsavRV+qhNhjE4=" />
</ section >
< section name ="javax/mail/IllegalWriteException.class" >
< attribute name ="SHA1-Digest" value ="3cxLMh+FlRjqxELF6z811wxwJ3U=" />
</ section >
< section name ="javax/mail/internet/HeaderTokenizer$Token.class" >
< attribute name ="SHA1-Digest" value ="rGHQ7krYXmKYNwalgqYnCmjgQ3w=" />
</ section >
< section name ="javax/mail/internet/MimePartDataSource.class" >
< attribute name ="SHA1-Digest" value ="NPv0BQyQ82wjRLVUB9WDs1pKrUs=" />
</ section >
< section name ="javax/mail/event/TransportAdapter.class" >
< attribute name ="SHA1-Digest" value ="jIO9yUltn+6tFOKt/G9y3b8BLwU=" />
</ section >
< section name ="javax/mail/URLName.class" >
< attribute name ="SHA1-Digest" value ="Ram9tx8SnJ5FI6/UjZyBGnVdpZk=" />
</ section >
< section name ="javax/mail/Service$TerminatorEvent.class" >
< attribute name ="SHA1-Digest" value ="AAepxMWJWKjNa2JgGvtOQIAiIz0=" />
</ section >
< section name ="javax/mail/FetchProfile$Item.class" >
< attribute name ="SHA1-Digest" value ="fByfdh74743fCQLCsuOZDuiscXA=" />
</ section >
< section name ="com/sun/mail/util/LineInputStream.class" >
< attribute name ="SHA1-Digest" value ="U4ge7l4tTuc7CoYiGCWfVIzQHb0=" />
</ section >
< section name ="javax/mail/search/DateTerm.class" >
< attribute name ="SHA1-Digest" value ="vJXnPg9/IHbldP69yyq+NWTpLNw=" />
</ section >
< section name ="javax/mail/UIDFolder$FetchProfileItem.class" >
< attribute name ="SHA1-Digest" value ="80zDUPv+Zjp3XpWAf9aNpcnB7fs=" />
</ section >
< section name ="javax/mail/Message.class" >
< attribute name ="SHA1-Digest" value ="l9F9cuuuGzqCDoWgUQ/hN6zJkLg=" />
</ section >
< section name ="javax/mail/BodyPart.class" >
< attribute name ="SHA1-Digest" value ="PWQw0Zc7kqJpm3QSAypfHgvYwAk=" />
</ section >
< section name ="com/sun/mail/handlers/text_html.class" >
< attribute name ="SHA1-Digest" value ="uMg+BjWZOMudp4lwn0AeQp2Ll2s=" />
</ section >
< section name ="javax/mail/search/SearchException.class" >
< attribute name ="SHA1-Digest" value ="6M5ARIEt9GhTSAgYK0QQ75z+haU=" />
</ section >
< section name ="javax/mail/MessageRemovedException.class" >
< attribute name ="SHA1-Digest" value ="+Ym1xj31hREImv7KLvXqmcjJt7c=" />
</ section >
< section name ="javax/mail/internet/InternetAddress.class" >
< attribute name ="SHA1-Digest" value ="CbNks/vS6vv1CRXUrW1WZgQlMAo=" />
</ section >
< section name ="com/sun/mail/imap/protocol/BODYSTRUCTURE.class" >
< attribute name ="SHA1-Digest" value ="ElxlifED2LoOupwcLFFRn39Vmxk=" />
</ section >
< section name ="com/sun/mail/iap/Argument.class" >
< attribute name ="SHA1-Digest" value ="Ii7uAU+6C0l8CWgJWHAFd3edDb8=" />
</ section >
< section name ="javax/mail/UIDFolder.class" >
< attribute name ="SHA1-Digest" value ="pbqgsgRC3d6VTRkkd5tLzVTVKck=" />
</ section >
< section name ="com/sun/mail/pop3/POP3Store.class" >
< attribute name ="SHA1-Digest" value ="x0CBJQXbnuOE01ZtsuhUhlHLnY4=" />
</ section >
< section name ="javax/mail/search/AddressStringTerm.class" >
< attribute name ="SHA1-Digest" value ="qWl5/UlirCP1V9jEg+byZ+y72Js=" />
</ section >
< section name ="javax/mail/internet/MimeMultipart.class" >
< attribute name ="SHA1-Digest" value ="GsJV8s+34vLn4LXRjcbKT/1nG98=" />
</ section >
< section name ="javax/mail/Provider$Type.class" >
< attribute name ="SHA1-Digest" value ="i7sSSn1nWr25wgqoV0bN8V9gaD0=" />
</ section >
< section name ="com/sun/mail/imap/Rights$Right.class" >
< attribute name ="SHA1-Digest" value ="u88NZbtOpu7pVUT/kSjUn6inCM0=" />
</ section >
< section name ="com/sun/mail/iap/BadCommandException.class" >
< attribute name ="SHA1-Digest" value ="mxeS+BDu9qBf8fxpzeHi8d15YUU=" />
</ section >
< section name ="javax/mail/internet/InternetHeaders$InternetHeader.class" >
< attribute name ="SHA1-Digest" value ="2pSm9WJEH5P9CQYVUqV89dOK9v0=" />
</ section >
< section name ="javax/mail/search/StringTerm.class" >
< attribute name ="SHA1-Digest" value ="ApAKtUQXK6A593avdoIcCpB3Kxg=" />
</ section >
< section name ="com/sun/mail/imap/protocol/UID.class" >
< attribute name ="SHA1-Digest" value ="5xsl6OTtOIaFXGkTUs4KddePfN4=" />
</ section >
< section name ="javax/mail/search/SubjectTerm.class" >
< attribute name ="SHA1-Digest" value ="a6L51yHzK+/AEynE+0I+ONOipnY=" />
</ section >
< section name ="javax/mail/Store.class" >
< attribute name ="SHA1-Digest" value ="NpvBEchNHpS0FNy343/GCMubkeQ=" />
</ section >
< section name ="javax/mail/event/ConnectionAdapter.class" >
< attribute name ="SHA1-Digest" value ="B4IbCXfTWp23kRwdByVw4nmSaSA=" />
</ section >
< section name ="com/sun/mail/smtp/SMTPAddressSucceededException.class" >
< attribute name ="SHA1-Digest" value ="I9gnmrsW0xKK5TWgk0dm0ex24Oo=" />
</ section >
< section name ="com/sun/mail/util/QPEncoderStream.class" >
< attribute name ="SHA1-Digest" value ="SBlkP3dxd68VX8Z9pkRnvQXwJXI=" />
</ section >
< section name ="com/sun/mail/iap/CommandFailedException.class" >
< attribute name ="SHA1-Digest" value ="Y82NdJDvE0cpI+2SqXdjjjLBaCI=" />
</ section >
< section name ="javax/mail/MultipartDataSource.class" >
< attribute name ="SHA1-Digest" value ="+ubXpNbAX65XHWH3nKVOs0NTg2Y=" />
</ section >
< section name ="javax/mail/internet/PreencodedMimeBodyPart.class" >
< attribute name ="SHA1-Digest" value ="UFlSP6N8SDImnVpW9haodzEKKuA=" />
</ section >
< section name ="javax/mail/Flags.class" >
< attribute name ="SHA1-Digest" value ="+QbgJ6EVLeAr4w+IW5bMGrZJuN4=" />
</ section >
< section name ="javax/activation/MimeTypeParseException.class" >
< attribute name ="SHA1-Digest" value ="m7mmJXw0gXLY1GS4k6aq0tYkr5M=" />
</ section >
< section name ="javax/activation/CommandInfo.class" >
< attribute name ="SHA1-Digest" value ="f8KZC5t/kOXy9g3WtT8D6d0zWAc=" />
</ section >
< section name ="com/sun/activation/viewers/ImageViewer.class" >
< attribute name ="SHA1-Digest" value ="KVw7I+eEq1S8azCdy71jIdIekr8=" />
</ section >
< section name ="javax/activation/MimeTypeParameterList.class" >
< attribute name ="SHA1-Digest" value ="QnLZ1AlTbnC6x06iuSXHzVVVtaY=" />
</ section >
< section name ="javax/activation/DataContentHandlerFactory.class" >
< attribute name ="SHA1-Digest" value ="3aRLzh4IMVBlbc52F5lBdRQy2Vw=" />
</ section >
< section name ="javax/activation/DataSourceDataContentHandler.class" >
< attribute name ="SHA1-Digest" value ="PZe91L1ONaRPG7qVgbYpfGavH4Q=" />
</ section >
< section name ="javax/activation/DataSource.class" >
< attribute name ="SHA1-Digest" value ="g86kGPXVFjqZi+DpfbiLAtS8fo8=" />
</ section >
< section name ="com/sun/activation/registries/MimeTypeFile.class" >
< attribute name ="SHA1-Digest" value ="oLr1fHVCH+Nfmi1QYOHD7g0BnJM=" />
</ section >
< section name ="com/sun/activation/viewers/TextViewer.class" >
< attribute name ="SHA1-Digest" value ="wIWBUn1WMYQsTXWhb2LqH8a8Jb0=" />
</ section >
< section name ="com/sun/activation/viewers/TextEditor.class" >
< attribute name ="SHA1-Digest" value ="IhFQa8fovU17cM4MIuPYizaoOaw=" />
</ section >
< section name ="com/sun/activation/registries/LineTokenizer.class" >
< attribute name ="SHA1-Digest" value ="vO89GlctMy311MKQuIXM5hKV4nQ=" />
</ section >
< section name ="javax/activation/DataContentHandler.class" >
< attribute name ="SHA1-Digest" value ="0qTvM4m+cRfMN+3GiqLfn+RLQuU=" />
</ section >
< section name ="javax/activation/MimeType.class" >
< attribute name ="SHA1-Digest" value ="dWNqSXFXHLIM5UQQhtVyaoRicaQ=" />
</ section >
< section name ="javax/activation/FileDataSource.class" >
< attribute name ="SHA1-Digest" value ="qcljJOyNKdelFdqMNhDD27evuk8=" />
</ section >
< section name ="javax/activation/SecuritySupport.class" >
< attribute name ="SHA1-Digest" value ="S46zop0lhrrDKGZwNH91BETwaFg=" />
</ section >
< section name ="javax/activation/MailcapCommandMap.class" >
< attribute name ="SHA1-Digest" value ="IY4POuZ7WA8WTgwdkpihrweS3wg=" />
</ section >
< section name ="javax/activation/DataHandler$1.class" >
< attribute name ="SHA1-Digest" value ="3PE4Qw/EanCg+NXytqiX5gByGL0=" />
</ section >
< section name ="javax/activation/DataHandler.class" >
< attribute name ="SHA1-Digest" value ="Q9J99BwfRcIYvVoG7iLaP4kK/5w=" />
</ section >
< section name ="javax/activation/SecuritySupport$1.class" >
< attribute name ="SHA1-Digest" value ="cAJSVLIeAQDIMsjUDf8JDoODIVI=" />
</ section >
< section name ="com/sun/activation/registries/MimeTypeEntry.class" >
< attribute name ="SHA1-Digest" value ="iQm+s8GK/lR3K9+W6mSS93S9pTM=" />
</ section >
< section name ="javax/activation/SecuritySupport$3.class" >
< attribute name ="SHA1-Digest" value ="mk8IMigKjXYeBD+Rqkxo5t8z+lg=" />
</ section >
< section name ="javax/activation/SecuritySupport$5.class" >
< attribute name ="SHA1-Digest" value ="SJpj/wH2OL8Yvg/rkIdV3rDntwg=" />
</ section >
< section name ="javax/activation/SecuritySupport$2.class" >
< attribute name ="SHA1-Digest" value ="F2xmB1e2hNKSYzYlkrpG27HKpbY=" />
</ section >
< section name ="javax/activation/SecuritySupport$4.class" >
< attribute name ="SHA1-Digest" value ="y6FVr0drZlbptJrcS/98PvwxUWw=" />
</ section >
< section name ="javax/activation/MimetypesFileTypeMap.class" >
< attribute name ="SHA1-Digest" value ="g6phKDnBV72LQsfNtGAtIXKefH0=" />
</ section >
< section name ="javax/activation/FileTypeMap.class" >
< attribute name ="SHA1-Digest" value ="/6uTi6QblT17/xDvnoiI4lqeRk0=" />
</ section >
< section name ="javax/activation/CommandObject.class" >
< attribute name ="SHA1-Digest" value ="ubyjFuSm1evoIOlmhsBcKVCLv/Q=" />
</ section >
< section name ="javax/activation/DataHandlerDataSource.class" >
< attribute name ="SHA1-Digest" value ="zY8hHG8T6Fb6gHMQ3zoBZZSfegI=" />
</ section >
< section name ="com/sun/activation/registries/MailcapTokenizer.class" >
< attribute name ="SHA1-Digest" value ="KUCh8CV+5Ia4Jp5uFkzVzKsNvOs=" />
</ section >
< section name ="javax/activation/ActivationDataFlavor.class" >
< attribute name ="SHA1-Digest" value ="aqjd93WIpK0krYHmWKcBDa+NM/I=" />
</ section >
< section name ="com/sun/activation/registries/MailcapFile.class" >
< attribute name ="SHA1-Digest" value ="XuurUYdTVsJfeqGWBHHwqP7/eJc=" />
</ section >
< section name ="com/sun/activation/registries/MailcapParseException.class" >
< attribute name ="SHA1-Digest" value ="21c8agHGFiu4q9c3h+bVrsLESvE=" />
</ section >
< section name ="javax/activation/ObjectDataContentHandler.class" >
< attribute name ="SHA1-Digest" value ="2QGo0CJI4KcAgECMicBaATdEAjI=" />
</ section >
< section name ="javax/activation/URLDataSource.class" >
< attribute name ="SHA1-Digest" value ="Jvr/7HSgqteI2+qrpCcP9GKdvxI=" />
</ section >
< section name ="javax/activation/UnsupportedDataTypeException.class" >
< attribute name ="SHA1-Digest" value ="XqU4tNQVzIOihXn7JZeLHgKlgWo=" />
</ section >
< section name ="javax/activation/CommandMap.class" >
< attribute name ="SHA1-Digest" value ="7rGDE9NEoTBwTIk13EPyXzvCXVk=" />
</ section >
< section name ="com/sun/activation/viewers/ImageViewerCanvas.class" >
< attribute name ="SHA1-Digest" value ="BVI/zbrr0jFAkuo0didLXMWy/m4=" />
</ section >
< section name ="com/sun/activation/registries/LogSupport.class" >
< attribute name ="SHA1-Digest" value ="R9iOxR0B5szkHmX7S9ptGdDQJUs=" />
</ section >
</ manifest >
< zipfileset src ="${libDir}/classes12.jar" />
< zipfileset src ="${libDir}/commons-collections-3.1.jar" />
< zipfileset src ="${libDir}/commons-lang-2.1.jar" />
< zipfileset src ="${libDir}/log4j-1.2.12.jar" />
< zipfileset src ="${libDir}/jdom.jar" />
< zipfileset src ="${libDir}/comm.jar" />
< zipfileset src ="${libDir}/derby.jar" />
< zipfileset src ="${libDir}/derbytools.jar" />
< zipfileset src ="${libDir}/jamon.jar" />
< zipfileset src ="${libDir}/jakarta-regexp-1.4.jar" />
< zipfileset src ="${libDir}/mysql-connector-java-5.0.4-bin.jar" />
< zipfileset src ="${libDir}/mail.jar" />
< zipfileset src ="${libDir}/activation.jar" />
</ jar >
< jar destfile ="${distDir}/dp-src-${DSTAMP}.jar" basedir ="${src_temp}" />
</ target >
你也可以直接把mail.jar activation.jar中的MANIFEST。MF的安全认证信息全部COPY到一个新的MANIFEST。MF,并指明主类等其他信息,在Build文件当中指明该文件为生成JAR的MANIFEST即可:
但在实际测试当中,总是提示我MANIFEST文件不正确,不知道为什么,有兴趣的话可以自己试一下。
参考: