2011-06-24 1 views
0

J'ai ce problème que je ne peux pas sembler résoudre facilement. Je souhaite envoyer un e-mail depuis une application Web GWT. J'ai tout fait correctement en mettant le code du côté du serveur et en l'invoquant avec une interface Async comme prévu. Donc tout va bien, sauf que lorsque j'exécute la fonction d'envoi d'email, j'obtiens une erreur de type mailexception avec et une exception interne de type AccessControlException "access denied (java.net.SocketPermission <my smtp server> resolve)".Envoyer un e-mail avec GWT: obtenir AccessControlException

Maintenant, j'ai testé la fonction dans une application de console Java régulière et cela a fonctionné parfaitement. Donc je suppose que je dois ajouter du code pour accorder l'accès d'une manière ou d'une autre. Tout le monde peut m'aider dans cela?

Voici le code de l'envoyer e-mail:

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(); 
} 

et c'est le code de la classe appelant:

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: Je pensais au début que je besoin d'inclure l'archive mail.jar, mais il est déjà inclus dans la boîte à outils gwt, donc ce n'est pas la cause du problème. Et j'utilise Jetty avec Eclipse.

+0

Pour débugger créer un projet simple avec juste votre pièce mail et principale, puis assurez-vous de l'exécuter à partir de la même machine que le ver ser GWT sera être. Cela vous donnera l'assurance que le code de messagerie fonctionne comme prévu. –

+0

Avez-vous inclus activation.jar dans la lib de votre application web? – Jai

+0

à la deuxième réflexion ... il semble que certains problèmes avec vos serveurs JRE vérifier s'ils se réfèrent à la même version. Un autre endroit que je vérifierais est vos paramètres de serveur smtp. – Jai

Répondre

0

Ok cela peut sembler bizarre, mais je déployé le code sur un serveur dev (linux) et cela a fonctionné comme un charme.

Sur ma machine Windows un, il ne fonctionne toujours pas, et d'obtenir toujours la même erreur. Mais puisque cela fonctionne sur la machine de dev, je suis heureux.

Cependant, cela ne marche pas encore expliquer la raison ....