GlassFishServer3.1とJavaメールApi1.4.5を使用しています。
シナリオ:アプレットがあり、クリックすると電子メールメッセージが送信されます。
メールの送信はNetbeansAppletViewerで完全に機能しますが、ブラウザに追加してそこからメールを送信しようとすると、地獄に変わります。
ポリシーファイル、署名付き/署名なしアプレットなどについて、何時間も読んでいます。
署名されたアプレットを使用してみました(署名するためのチュートリアルがたくさんありますが、Javaのkeytoolsを使用すると非常に簡単でした)。ブラウザで実行すると、自己署名証明書であるため許可を求められますが、許可を与えますが、それでも同じ例外が発生します。
また、java.poilcyファイルの追加を変更してみました
パーミッションjava.net.SocketPermission"smtp.gmail.com:587"、 "listen、resolve";
しかし、何もありません。
JavaコントロールパネルでJavaコンソールをアクティブ化したので、その例外であることはわかっています。私は本当に他に何をすべきかわかりません。
メールを送信するコードは次のとおりです。
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();