java.de sécurité.AccessControlException: accès refusé (“java.net.SocketPermission” “smtp.gmail.com” “résoudre”)

Je suis en utilisant Serveur GlassFish 3.1 et la Java mail Api 1.4.5.

Scénario: j'ai une applet, que lorsque l'utilisateur clique dessus, il envoie un message e-mail.

Envoyer l'e-mail fonctionne parfaitement sur Netbeans AppletViewer, mais il se transforme en enfer lorsqu'il est ajouté au navigateur et essayez d'envoyer le courriel à partir de là.

J'ai lu pendant des heures, à propos de la politique de fichiers, signé/non signé applets...etc.

J'ai essayé d'utiliser l'applet signée (beaucoup de tutoriels pour la signature, elle, était assez simple en utilisant la keytools de java). Lorsque je l'exécute sur le navigateur, il demande la permission parce que c'est un certificat auto-signé, je lui donne la permission , mais encore, elle crache de la même exception.

J'ai aussi essayé de modifier java.poilcy fichier ajoutant

permission java.net.SocketPermission "smtp.de gmail.com:587", "écouter,à les résoudre";

Mais rien.

Je sais que c'est une exception parce que je activaded la Console Java dans le Panneau de configuration Java. Je ne sais pas vraiment quoi faire d'autre.

Voici le code qui envoie l'e-mail:

    String host = "smtp.gmail.com";
    String from = *****;
    String pass = ******;
    Properties props = new Properties();
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");

    Session session = Session.getDefaultInstance(props, null);
    this.message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));

    InternetAddress toAddress = new InternetAddress(this.to);
    this.message.addRecipient(Message.RecipientType.TO, toAddress);

    this.message.setSubject(this.subject);

    this.message.setText(this.body);

    Transport transport = session.getTransport("smtp");
    transport.connect(host, from, pass);
    transport.sendMessage(this.message, this.message.getAllRecipients());
    transport.close();
Vous êtes sûr que c'est l'applet plutôt que GMail qui refuse la connexion?
Absolument sûr, car il fonctionne très bien avec l'AppletViewer (lorsque vous exécutez l'applet dans NetBeans environnement plutôt que dans le navigateur)

OriginalL'auteur Chayemor | 2012-12-10