0

ユーザーがフォームに入力したときにメールを送信するためのシンプルなアプリを開発しています。

チュートリアルに従い、サンプルコードをコピーしました。しかし、実行しようとすると、次の例外がスローされます。

javax.servlet.ServletContext ログ: 着信 RPC 呼び出しのディスパッチ中の例外 com.google.gwt.user.server.rpc.UnexpectedException: サービス メソッド 'public abstract int com.pablo.pabloweb.client.communication.SendEmailService.send(java.lang .String)' が予期しない例外をスローしました: com.google.apphosting.api.ApiProxy$FeatureNotEnabledException: 管理コンソールで課金が有効になると、このアプリケーションに対してソケット API が有効になります。com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389) で com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579) で com.google .gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) ...

私の質問は: 請求の詳細を設定せずに Mail API を使用する方法はありますか? 私のアプリケーションが制限を超える可能性は決してありません。

必要な場合、これは例外を引き起こすコードです:

public boolean actualSend(String msgText, String subject) {
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);

    try {
        Message msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress("admin-gmail-email-address"));
        msg.addRecipient(Message.RecipientType.TO,
                         new InternetAddress("another-personal-email-address"));
        msg.setSubject(subject);
        msg.setText(msgText);
        Transport.send(msg);
        return true;
    } catch (AddressException e) {
        return false;
    } catch (MessagingException e) {
        return false;
    }
}
4

1 に答える 1

2

自分自身にメールを送信するだけの場合は、MailService の sendToAdmins メソッドを使用します。これは、クォータが最も高いものです: https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api /mail/MailService#sendToAdmins(com.google.appengine.api.mail.MailService.Message)

ところで、アプリが Sockets 例外を受け取っていることに注意してください。これは、実際には App Engine メール サービスを使用していないことを意味します。これは、ほぼ確実に、ランタイムに含まれている JavaMail クラスを使用していないためです。

いずれにせよ、低レベルの Mail API に切り替えて、sendToAdmins を使用することをお勧めします。ただし、そうしない場合は、アプリでアップロードする代わりに、含まれている JavaMail クラスを使用してみてください。

于 2013-07-29T17:29:20.487 に答える