Java 使用GWT发送电子邮件:获取AccessControlException

Java 使用GWT发送电子邮件:获取AccessControlException,java,email,gwt,access-denied,Java,Email,Gwt,Access Denied,我有这个问题,我似乎不能轻易解决 我想从GWT webApp中发送电子邮件。在将代码放入服务器端并按预期使用异步接口调用它方面,我做了所有正确的事情。因此,一切正常,只是当我执行发送电子邮件功能时,我得到一个类型为mailexception with的错误和类型为AccessControlException的内部异常“拒绝访问(java.net.SocketPermission resolve)” 现在我在一个普通的Java控制台应用程序中测试了这个函数,它工作得非常好。所以我想我需要添加一些代

我有这个问题,我似乎不能轻易解决

我想从GWT webApp中发送电子邮件。在将代码放入服务器端并按预期使用异步接口调用它方面,我做了所有正确的事情。因此,一切正常,只是当我执行发送电子邮件功能时,我得到一个类型为mailexception with的错误和类型为AccessControlException的内部异常
“拒绝访问(java.net.SocketPermission resolve)”

现在我在一个普通的Java控制台应用程序中测试了这个函数,它工作得非常好。所以我想我需要添加一些代码来授予访问权限。有人能帮我吗

以下是发送电子邮件的代码:

    public void SendMail(String name, String email, String message) throws EmailException{
    Email email1 = new SimpleEmail();
    email1.setHostName("mysmtpserver");
    email1.setSmtpPort(25);
    email1.setAuthenticator(new DefaultAuthenticator("myemail", "mypwd"));
    email1.setTLS(false);
    email1.setFrom(email);
    email1.setSubject("Feedback from your website");
    email1.setMsg(escapeHtml(message));
    email1.addTo("targetemail");
    email1.send();
}
这就是调用它的类的代码:

public class SiteDataServiceImpl extends RemoteServiceServlet implements SiteDataService {
@Override
public boolean SendEmail(String name, String email, String message) throws IllegalArgumentException {
    try {
        new Common().SendMail(name, email, message);
        return true;
    } catch (EmailException e) {
        e.printStackTrace();
        return false;
    }
}
}


PS:我起初认为我需要包含mail.jar归档,但它已经包含在gwt工具包中,所以这不是问题的原因。我正在将Jetty与Eclipse一起使用。

好的,这听起来可能有点奇怪,但我将代码部署在了一个开发服务器(linux)上,它工作得非常出色

在我的windows机器上,它仍然不工作,并且仍然得到相同的错误。但是由于它在dev机器上工作,我很高兴


但是,这仍然不能解释原因。…

要调试它,请创建一个简单的项目,其中只包含一个邮件和一个main,然后确保从与GWT服务器相同的机器上运行它。这将使您确信邮件代码正在按预期运行。您是否已将activation.jar包含在web应用程序的库中?仔细想想。。。看起来您的服务器存在一些问题,请检查它们是否引用了相同的版本。我要检查的另一个地方是您的smtp服务器设置。感谢您的回复,但我尝试了所有这些,但没有任何积极的结果。您是否尝试过使用Simple main的独立java应用程序?我怀疑这与一些防火墙设置有关