Google应用程序引擎中包含的javamail版本
appengine-api-1.0-sdk jar(javax.mail)中包含了一些JavaMail类,但不是全部。我需要从JavaMail中添加更多的类(例如com.sun.mail.imap)。添加JavaMail 1.5.6版时,我遇到了兼容性问题。在添加JavaMail 1.4.7版时,到目前为止一切似乎都很好 谷歌应用程序引擎1.9.38版(或更新版本)中包含的JavaMail的确切版本是什么?我怎么能自己发现呢Google应用程序引擎中包含的javamail版本,java,google-app-engine,jakarta-mail,Java,Google App Engine,Jakarta Mail,appengine-api-1.0-sdk jar(javax.mail)中包含了一些JavaMail类,但不是全部。我需要从JavaMail中添加更多的类(例如com.sun.mail.imap)。添加JavaMail 1.5.6版时,我遇到了兼容性问题。在添加JavaMail 1.4.7版时,到目前为止一切似乎都很好 谷歌应用程序引擎1.9.38版(或更新版本)中包含的JavaMail的确切版本是什么?我怎么能自己发现呢 当JavaMail jar优先于Google应用程序引擎jar时,我会
当JavaMail jar优先于Google应用程序引擎jar时,我会遇到安全异常。使用比Google应用程序引擎更新的JavaMail有什么诀窍吗?谷歌应用程序引擎中的JavaMail是否更新过?错过了新版本的功能和错误修复,这让人很难过 最常见的方法是启用调试或从包中读取
Session s = Session.getInstance(new Properties());
s.setDebug(true); //Prints the version to System.out
System.out.println(Session.class.getPackage());
您可以引用,然后查找每个版本中已修复的bug
例如,您可以判断它是否是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();
}
}
如果mimessage.setRecipients(类型、字符串)不接受空地址:
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.");
}
如果它支持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);
你到底得到了什么样的安全例外?这是规范1.4。但我不确定是否有来自官方JavaMail jar的服务提供商。您是否尝试过打印或记录
javax.mail.Session.class.getPackage().toString()
的结果以确定版本?@Bill Shannon:我现在注意到它仅适用于JavaMail版本1.5.6,而不适用于1.4.7:它是:“java.security.AccessControlException:拒绝访问(“java.lang.RuntimePermission”“setFactory”)”我认为这是合理的,因为GoogleAppEngine是一个受限环境,这是关于套接字的,所以与套接字相关的部分可以以不同的方式实现。然而,这并不能解释为什么我在替换为JavaMail 1.4.7时无法观察到它。@jmehrens:仅对于Google应用程序引擎,它只是“###package javax.mail”。当替换为1.4.7时,我得到“####package javax.mail,JavaMail(TM)API设计规范,版本1.4”,当替换为1.5.6时,得到的是“##package javax.mail,JavaMail(TM)API设计规范,版本1.5”。@xberger这里是另一个尝试确定版本的示例:Properties=new Properties();道具。放置(“邮件。发件人”,“一四”four@or.newer"); sessions=Session.getInstance(props);对于(javax.mail.Provider p:s.getProviders()){System.out.println(p.toString());}新的MIMessage(s.setFrom()//NPE如果小于1.4.4,则表示异常