JavaMail安装和设置常见问题解答
当前位置:以往代写 > JAVA 教程 >JavaMail安装和设置常见问题解答
2019-06-14

JavaMail安装和设置常见问题解答

JavaMail安装和设置常见问题解答

副标题#e#

问. 我如何安装JavaMail API实现?

答:解压缩分发的zip文件,并编辑CLASSPATH 情况变量以包括mail.jar文件,该文件包罗在JavaMail API分发中。你也需要JavaBeans Activation Framework(拜见下面)的实现。参阅 README文件(在分发中),得到其他细节和例子。

问. JavaMail 是否包罗所有须要的邮件处事器?

答:不是,JavaMail API 包不包罗任何邮件处事器。为了利用JavaMail API 包,你将需要会见 IMAP或POP3 邮件处事器(用于阅读邮件)和/或 SMTP 邮件处事器(用于发送邮件)。这些邮件处事器凡是由 Internet 处事提供商提供,可能作为组织网络基本布局的一部门。假如你不必会见这样的邮件处事器,请往下看。

问. 从那边可以得到须要的邮件处事器?

答:Sun Java System Messaging Server 可用于Solaris 和Windows 平台。华盛顿大学的IMAP 处事器支持多种平台 (UNIX、32 位 Windows 等)。可从如下地点获取源代码:ftp://ftp.cac.washington.edu/imap/imap.tar.Z。其他的很多供给商提供了支持Internet 尺度的邮件处事器。可以从 IMAP Connection 和Internet Mail Consortium 得到更多信息。

问. 我应该利用什么主机名、用户名或暗码?

答:我们不提供邮件处事器让你利用。你必需利用本身的邮件处事器,可能利用Internet 处事提供商或你所事情的公司提供的邮件处事器。网络打点员大概给你一些须要的信息用于设置 JavaMail,以便同邮件处事器一起事情。

问. 我如何设置 JavaMail 通过署理处事器事情?

答:大大都署理处事器只支持HTTP协议。JavaMail 没有利用HTTP协议来阅读或发送邮件。利用署理处事器的一个主要原因是为了答允企业网络中的HTTP 请求通过企业防火墙。防火墙凡是会阻止对 Internet 的大大都会见,但答允来自署理处事器的请求通过。另外,企业网络内部的邮件处事器将为邮件执行雷同的成果,通过 SMTP 吸收动静,然后将它们转发到Internet上的最终目标地,以及吸收传入的动静,然后将它们发送到符合的内部邮件处事器。

假如你的署理处事器支持SOCKS V4或V5协议 (http://www.socks.nec.com/aboutsocks.html, RFC1928),并答允匿名毗连,可以汇报 Java运行时把所有的TCP socket 直接毗连到SOCKS 处事器。参阅 http://java.sun.com/j2se/1.4/docs/guide/net/properties.html,获取 socksProxyHost 和socksProxyPort 属性的最新文档。这些是系统级属性,而不是 JavaMail 会话属性。当挪用应用措施时,它们可以从呼吁行中配置,譬喻:java -DsocksProxyHost=myproxy …。这个东西可用于指出从 JavaMail 到SOCKS 署理处事器举办 SMTP、IMAP 和POP3 通信。留意,配置这些属性将汇报 所有TCP socket 毗连到SOCKS 署理,在应用措施的其他方面上,这大概会带来负面影响。

如果没有这样的SOCKS 处事器,假如想利用JavaMail 来直接会见防火墙外部的邮件处事器,那将需要设置防火墙来答允这一会见。一个简朴的HTTP 署理 Web 处事器是足够的。

问. 如安在Windows NT 中配置 CLASSPATH?

答:具体说明可从 这里 得到。

问. 当试图在Linux 中运行措施时,获得了很是奇怪的错误动静,并且措施运行失败了。错误在那边?

答:凡是,错误动静看起来像下面这样:

Exception in thread "main"

java.lang.VerifyError:(Class:com/sun/mail/pop3/POP3Store,

method: finalize Signature :()V)

Illegal use of nonvirtual function call

问题是由于在Linux上,利用的unzip 呼吁是有bug 的版本,这样解压缩 JavaMail下载包时,unzip 呼吁粉碎了 mail.jar文件。获取更新版本的unzip 呼吁或利用JDK的jar 呼吁来解压缩下载包。


#p#副标题#e#

问. 在运行于SecurityManager下面的应用措施中,我如何利用JavaMail;我必需授予应用措施和JavaMail什么权限?

答:在具有SecurityManager的JDK 1.2(或更新版本)中,当利用JavaMail 时,JavaMail 读取 mail.jar文件中的设置文件有时会失败。在从 activation.jar文件中读取设置文件时,JavaBeans Activation Framework 大概也有沟通的问题。这些默认设置文件是作为“资源”文件存储的,而且存储在jar文件的META-INF 目次中。

有很多调试技能可用于抉择这是否是个问题。配置 Session 属性“mail.debug”为 true(或挪用session.setDebug(true)),将导致 JavaMail 在试图加载各个设置文件时打印调试动静。形如“DEBUG: can’t load default providers file”(DEBUG: 不能加载默认提供措施文件) 的动静指出这个问题大概存在。同样,配置 System 属性“javax.activation.debug”为“true”(譬喻,通过利用"java -Djavax.activation.debug=true …" 来运行措施),将导致 JAF 在试图加载各个资源文件时打印调试动静。最后,通过配置 system 属性“java.security.debug” 为“access:failure”(譬喻,通过利用“java -Djava.security.debug=access:failure …”来运行措施),JDK 可以发生有用的调试输出。

#p#分页标题#e#

除了读取设置文件的须要权限外,应用措施(和JavaMail)也将需要必然的权限才可以毗连到它利用的邮件处事器。假如应用措施利用System 属性来设置 JavaMail(譬喻,像很多 JavaMail 演示措施所做的那样,通过通报从 System.getProperties() 中返回的Properties工具到Session 结构函数),它也将需要必然的权限才可以利用System Properties工具。别的,应用措施可以利用本身的Properties工具,以及确信配置 "mail.from" 属性或"mail.user" 和"mail.host" 属性(拜见 InternetAddress.getLocalAddress() 要领)。

在JDK 1.2 SecurityManager 中,为了使应用措施可以或许利用JavaMail,应用措施、JavaMail 和JAF将需要某些权限,好比下面的一些权限(必然要利用适当的值替换主机名和路径名);把这些权限添加到应用措施利用的安详计策文件中。

grant {
    // following two permissions allow
    // access to default config files
    permission java.io.FilePermission
   "/path/to/mail.jar", "read";
    permission java.io.FilePermission
   "/path/to/activation.jar", "read";
    // following to use SMTP
    permission java.net.SocketPermission
   "SMTPHOST:25", "connect,resolve";
    // following to use IMAP
    permission java.net.SocketPermission
   "IMAPHOST:143", "connect,resolve";
    // following to use POP3
    permission java.net.SocketPermission
   "POP3HOST:110", "connect,resolve";
    // following needed if System.getProperties() is used
    permission java.util.PropertyPermission
   "*", "read,write";
  };

 

问. 如何设置 Web 处事器来运行 JavaMail 演示 servlet?

答:针对以下 Web 处事器的指导说明可从这里得到:

Tomcat

Apache with JServ

iPlanet Web Server

Java Web Server

问. 当在servlet 中利用JavaMail 时,未找到任何的JavaMail 类。我已经在处事器的CLASSPATH 中添加了 mail.jar?

答:当改变 CLASSPATH 时,凡是有须要完全重启 Web 处事器。

问. 我的servlet 可以找到JavaMail 类,但 JavaMail 诉苦它不能找到针对“smtp”或“imap”的处事提供措施或地点范例“rfc822”。

答:凡是这是因为 JavaMail 无法会见 mail.jar 中的设置文件,而这大概是由于安详权限问题造成的;拜见 本条目,获取更多的细节。也担保你没有提取 mail.jar 内容;在处事器的CLASSPATH 中,应该包罗未变动的mail.jar文件。

问. 在那边可以找到jws.jar?我已经安装了 Java Web Server 2.0,并试图运行 JavaMailServlet。README文件指示我在CLASSPATH 中添加 jws.jar。

答:jws.jar 不再与 Java Web Server 一起刊行(在以前版本中,它们是一起刊行的),因此不需要在CLASSPATH 中添加它。只要在CLASSPATH 中添加 mail.jar 和activation.jar,然后重启 Java Web Server。

    关键字:

在线提交作业