【问题标题】:GAE - When I deploy app does not function, but on localhost it works?GAE - 当我部署应用程序时不起作用,但在本地主机上它可以工作?
【发布时间】:2012-07-20 15:24:04
【问题描述】:

我已经使用 app 编写了一个 gae 引擎 java 邮件 api。

我的 appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>mailapps</application>
  <version>1</version>

  <!--
    Allows App Engine to send multiple requests to one instance in parallel:
  -->
  <threadsafe>true</threadsafe>

  <!-- Configure java.util.logging -->
  <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>

  <!--
    HTTP Sessions are disabled by default. To enable HTTP sessions specify:

      <sessions-enabled>true</sessions-enabled>

    It's possible to reduce request latency by configuring your application to
    asynchronously write HTTP session data to the datastore:

      <async-session-persistence enabled="true" />

    With this feature enabled, there is a very small chance your app will see
    stale session data. For details, see
    http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
  -->

</appengine-web-app>

当我在 localhost 上运行应用程序时,一切正常,但是当我在 gae 上运行部署它并运行它时,我得到:

错误:服务器错误服务器遇到错误,无法 完成您的请求。

如果问题仍然存在,请报告您的问题并提及 错误消息和导致它的查询。

我的应用有什么问题?你能帮帮我吗?

1.UPDATE_

gae 日志说:

java.lang.RuntimeException: javax.mail.SendFailedException: 发送 失败(javax.mail.MessagingException:非法参数 (java.lang.IllegalArgumentException:未经授权的发件人:未经授权 发件人))

2.更新

import java.io.IOException;
import java.util.Properties;
import java.util.logging.Logger;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class FeedbackServlet extends HttpServlet {

    private static final Logger log = Logger.getLogger(FeedbackServlet.class.getName());

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name = req.getParameter("name");
        String description = req.getParameter("description");
        String email = req.getParameter("email");
        Properties props = new Properties();
        Session session = Session.getDefaultInstance(props, null);
        log.info(description + name + email + " :Daten extrahiert!");
        String msgBody = name  + " :Name der Person" + "\n" + description + " :Beschreibung der Person" + "\n" + email + " :EMAIL";

        try {
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress("mailapps@gmail.com",
                    "It works"));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress("maximus@gmail.com", "Your name"));
            msg.setSubject("Bestellung");
            msg.setText(msgBody);
            log.info("Message send!");
            Transport.send(msg);

        } catch (Exception e) {
            resp.setContentType("text/plain");
            resp.getWriter().println("Something went wrong. Please try again.");
            throw new RuntimeException(e);
        }

        resp.setContentType("text/plain");
        resp.getWriter().println(
                "Thanks you for your feedback. An Email has been send out.");
    }
}

这就是 servlet!

【问题讨论】:

  • 您可能需要打开 GAE 日志(在您的 GAE 仪表板中),并检查是否有更多有用的错误信息
  • 它说:java.lang.RuntimeException: javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Illegal Arguments (java.lang.IllegalArgumentException: Unauthorized Sender: Unauthorized sender))跨度>
  • 您需要发布应用程序的 JavaMail 部分
  • 我在 UPDATE 2 中发布了 servlet。如果你能看一下,我会很高兴的!!!
  • 尝试在管理控制台中添加您自己的谷歌帐户或从权限中添加一个新帐户。而不是mailapps@gmail.com你自己的谷歌帐户

标签: java eclipse google-app-engine


【解决方案1】:

发件人电子邮件地址有明确的限制。 Google App Engine 文档提供了这方面的详细信息。

参考https://developers.google.com/appengine/docs/java/mail/overview#Sending_Mail

它会给你足够的选择,你可以考虑。

【讨论】:

    【解决方案2】:

    mailapps@gmail.com 是否有权访问您的应用程序?

    【讨论】:

      【解决方案3】:

      在控制台中转到 App Engine > 设置 > 应用程序设置。将此电子邮件地址添加到授权发件人列表中。出现此问题是因为您从未经授权的电子邮件 ID 发送电子邮件。

      • 无论您是否是项目的所有者,都没有关系 在应用引擎的应用程序设置中添加发件人电子邮件 ID >> 设置

      【讨论】:

        猜你喜欢
        • 2022-09-30
        • 2016-02-05
        • 2014-11-02
        • 1970-01-01
        • 2012-07-04
        • 2015-07-24
        • 2020-08-25
        • 1970-01-01
        • 2018-03-11
        相关资源
        最近更新 更多