4

アプリを使用して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: Illegal Arguments (java.lang.IllegalArgumentException: Unauthorized Sender: Unauthorized sender))

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.");
    }
}

それがサーブレットです!

4

3 に答える 3

4

送信者のメールアドレスには明確な制限があります。これについては、Google App Engine のドキュメントに詳細が記載されています。

https://developers.google.com/appengine/docs/java/mail/overview#Sending_Mailを参照してください

検討できる十分なオプションを提供します。

于 2012-07-20T17:20:00.780 に答える
2

コンソールで[App Engine] > [設定] > [アプリケーション設定]に移動します。この電子メール アドレスを許可された送信者のリストに追加します。この問題は、許可されていない電子メール ID から電子メールを送信しているために発生します。

  • あなたがプロジェクトの所有者であるかどうかは関係ありません。アプリエンジンのアプリケーション設定に送信者の電子メール ID を追加する必要はありません >> 設定

ここに画像の説明を入力

于 2016-06-16T06:33:10.530 に答える
2

mailapps@gmail.com はアプリケーションへのアクセス許可を持っていますか?

于 2012-07-20T16:50:17.660 に答える