【问题标题】:Mail API free quota without billing?Mail API 免费配额无需计费?
【发布时间】:2013-07-29 09:24:14
【问题描述】:

我一直在开发一个简单的应用程序,它可以在用户填写表格时向我发送电子邮件。

我遵循教程并复制了示例代码。但是当我尝试运行它时,它会抛出以下异常:

javax.servlet.ServletContext 日志:调度传入 RPC 调用时出现异常 com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract int com.pablo.pabloweb.client.communication.SendEmailService.send(java.lang.String)' 抛出了一个意外的异常:com.google。 apphosting.api.ApiProxy$FeatureNotEnabledException:在管理控制台中启用计费后,将为该应用程序启用 Socket 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;
    }
}

【问题讨论】:

    标签: java google-app-engine email billing


    【解决方案1】:

    如果您只是向自己发送邮件,请使用 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 类,而不是使用您的 App 上传它们。

    【讨论】:

    • 谢谢,这似乎是解决方案。重读文档我发现:“您需要的所有 JavaMail 类都包含在 App Engine SDK 中。不要将 Oracle® 的 JavaMail JAR 添加到您的应用程序中;如果这样做,应用程序将引发异常。”但是,删除 jar 会引发另一个异常:“java.lang.NoClassDefFoundError: javax/mail/internet/AddressException”
    • 我已经解决了附带问题。我没有添加 appengine-api-1.0-sdk.*.jar 来构建路径。现在它正在工作。
    猜你喜欢
    • 2017-07-07
    • 2013-10-26
    • 1970-01-01
    • 2020-07-17
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多