Google App Engine 中包含的 javamail 版本
Version of javamail included in Google App Engine
JavaMail 的一些 类 包含在 appengine-api-1.0-sdk jar (javax.mail),但不是全部。我需要从 JavaMail 添加一些 类(例如 com.sun.mail.imap)。添加 JavaMail 版本 1.5.6 时出现兼容性问题。添加 JavaMail 版本 1.4.7 时,到目前为止一切正常。
JavaMail 的 Google App Engine 版本 1.9.38(或更高版本)中包含什么确切版本?我怎样才能自己找到?
将 JavaMail jar 优先于 Google App Engine jar 时,出现安全异常。使用比 Google App Engine 中包含的更新的 JavaMail 有什么技巧吗? JavaMail 在 Google App Engine 中是否有更新?很遗憾错过新版本的功能和错误修复。
最常见的方法是启用调试或从包中读取。
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 and 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);
JavaMail 的一些 类 包含在 appengine-api-1.0-sdk jar (javax.mail),但不是全部。我需要从 JavaMail 添加一些 类(例如 com.sun.mail.imap)。添加 JavaMail 版本 1.5.6 时出现兼容性问题。添加 JavaMail 版本 1.4.7 时,到目前为止一切正常。
JavaMail 的 Google App Engine 版本 1.9.38(或更高版本)中包含什么确切版本?我怎样才能自己找到?
将 JavaMail jar 优先于 Google App Engine jar 时,出现安全异常。使用比 Google App Engine 中包含的更新的 JavaMail 有什么技巧吗? JavaMail 在 Google App Engine 中是否有更新?很遗憾错过新版本的功能和错误修复。
最常见的方法是启用调试或从包中读取。
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 and 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);