某些类的 JavaMail 包含在 appengine-api-1.0-sdk jar(javax.mail)中,但不是全部。我需要从 JavaMail 中添加更多类(例如com.sun.mail.imap)。添加 JavaMail 版本1.5.6时,我遇到了兼容性问题。添加 JavaMail 版本1.4.7时,到目前为止似乎工作正常。
Google App Engine版本1.9.38(或更新版本)中包含 JavaMail 的确切版本?我怎么能自己找到?
在 Google App Engine jar上优先使用 JavaMail jar时,我会收到安全例外情况。使用比 Google App Engine 中包含的更新的 JavaMail 有什么技巧吗? Google App Engine 中的 JavaMail 是否会更新?它'伤心错过的功能和新版本的错误修正。
答案 0 :(得分:0)
最常见的方法是启用调试或从包中读取。
Session s = Session.getInstance(new Properties());
s.setDebug(true); //Prints the version to System.out
System.out.println(Session.class.getPackage());
您可以引用JavaMail CHANGES.txt,Issue Tracker和the repository,然后查找每个版本中已修复的错误。
例如,您可以判断它是否为JavaMail 1.4.4 MimeMessage.setFrom有一个链式原因:
try {
Properties props = new Properties();
props.put("mail.from", "one four four@@or.newer");
Session s = Session.getInstance(props);
new MimeMessage(s).setFrom();
} catch (MessagingException me) {
Throwable cause = me.getNextException();
if (cause == null) {
System.err.println("JavaMail 1.4.3 or older.");
} else if (cause instanceof AddressException) {
System.err.println("JavaMail 1.4.4 or newer.");
} else {
me.printStackTrace();
}
}
JavaMail 1.4.5如果MimeMessage.setRecipients(type,String)接受空地址:
try {
Properties props = new Properties();
Session s = Session.getInstance(props);
new MimeMessage(s).setRecipients(Message.RecipientType.TO, (String) null);
System.err.println("JavaMail 1.4.5 or newer.");
} catch (NullPointerException me) {
System.err.println("JavaMail 1.4.4 or older.");
}
JavaMail 1.4.6如果它支持java.util.logging
:
Session s = Session.getInstance(props);
Logger.getLogger("javax.mail").addHandler(new Handler() {
@Override
public void publish(LogRecord record) {
System.out.println(new SimpleFormatter().format(record));
}
@Override
public void flush() {
}
@Override
public void close() {
}
});
s.setDebug(true);