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

时间:2011-06-24 05:28:36

标签: java email gwt access-denied

我有这个问题,我似乎无法轻易解决。

我想从GWT webApp发送电子邮件。在将代码放入服务器端并使用Async接口调用它时,我做了一切正确的事情。所以一切都好,除了当我执行send email函数时,我得到一个类型为mailexception的错误,并且类型为AccessControlException "access denied (java.net.SocketPermission <my smtp server> 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工具包中了,所以它不是问题的原因。我在Eclipse中使用Jetty。

1 个答案:

答案 0 :(得分:0)

好的,这可能听起来很奇怪,但我在开发服务器(linux)上部署了代码,它就像一个魅力。

在我的机器上有一个Windows,它仍然无法正常工作,但仍然会出现同样的错误。但由于它适用于开发机器,我很高兴。

然而,这仍然无法解释原因......