-1

サーブレットからメールを送信しようとしています。例外はありませんが、アカウントにメールが届きません。次のコードを使用しています。

 public class SendEmailServlet extends HttpServlet {
@SuppressWarnings({ "unchecked" })
public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/plain");
    PrintWriter out = resp.getWriter();
    PersistenceManager pm = PMF.get().getPersistenceManager();
    try
    {
         String to[] = {"mygmail@gmail.com"};
            String host = "smtp.gmail.com";
            String username = "mygmail@gmail.com";
            String password = "password";
            Properties props = new Properties();
            props.put("mail.smtps.auth", "true");
            // ...
            Session session = Session.getInstance(props);
            MimeMessage msg = new MimeMessage(session);
            // set the message content here
            msg.setFrom(new InternetAddress(username,"Me"));
            msg.setSubject("Testing");
            msg.setText("Testing...");
            Address[] addresses = new Address[to.length];
            for (int i = 0; i < to.length; i++) {
                Address address = new InternetAddress(to[i]);               
                addresses[i] = address;
                // Add the given addresses to the specified recipient type.
                msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to[i]));
            } 

            Transport t = session.getTransport("smtps");

            t.connect(host, username, password);
            t.sendMessage(msg, msg.getAllRecipients());
            t.close();

            out.println(0);
        }
    }
    catch (Exception e)
    {
       System.out.println("Exception error: " + e);
       out.println(e);
    }
    finally
    {
        pm.close();
    }
}

}

私は今、次の例外を取得しています:

  Exception error: java.security.AccessControlException: access denied (java.net.SocketPermission smtp.gmail.com resolve)

メールが届かない理由と、このコードの問題点を教えてください。前もって感謝します

4

5 に答える 5

0

通常、JavaMail を使用して、サーブレットを使用してメールを送信できます。AppEngine を使用しているとのことでした (サーブレットから電子メールを送信できず、java.security.AccessControlException を取得できないのはなぜですか? )。Google App Engine では JavaMail を使用してメールを送信できますが、appengine が提供する JavaMail を使用してメール サーバーに接続することはできません。トランスポートまたはセッションに追加された SMTP 構成は無視されます。 https://developers.google.com/appengine/docs/java/mail/usingjavamail#JavaMail_Features_Not_Supported

于 2012-07-26T17:13:40.950 に答える
0

https://developers.google.com/appengine/docs/java/mail/overviewを読む 基本的に、アプリに JavaMail ライブラリを含めるのをやめ、ホストに接続しようとしないでください。メッセージを作成し、Transport.send(msg); に直接ジャンプします。

于 2012-07-27T02:30:01.963 に答える
0

間違いのようです:

props.put("mail.smtp.host","localhost");

システムでメールサーバーを実行するまでは、 localhostにしないでください。

この質問を見てください: Javamail を使用して Gmail smtp サーバーに接続すると、指定されたポートが無視され、25 の使用が試行されます

そしてはい、Axel がコメントしたように、最初にコマンドラインで試してください

于 2012-07-26T13:20:57.443 に答える
0

ローカルホストで電子メール サーバーを実行していますか? もしそうなら、それは認証を無効にしていますか?

ログにエラーメッセージが表示される場合があります。

于 2012-07-26T13:23:22.583 に答える
0

その理由は、smtp ホストとして localhost を使用しているためです。送信者として localhost を使用する前に、コンピューターでメール サーバーの展開を使用する必要があります。その後でも、サーバーを登録する必要がある場合があります。

gmail や yahoo メールでも可能です。Google メールの smtp ホストを使用します。クレドを使用して認証し、先に進みます。

このリンクを試してください:

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

于 2012-07-26T13:27:59.360 に答える