【问题标题】:Show E-Mail content on .jsp page / GAE在 .jsp 页面/GAE 上显示电子邮件内容
【发布时间】:2015-01-28 16:14:58
【问题描述】:

我正在使用 Google App Engine 编写应用程序。 该应用程序现在可以接收电子邮件,我可以在控制台中看到这些。

我想要的是三个变量(摘要、地址和文本)在前端 (guestbook.jsp) 中可见。 我尝试了各种选项(请参阅注释代码),但没有一个向我显示前端的信息。 到目前为止,我只尝试传递一个变量(摘要)。

稍后我想将信息存储在数据库中。

小服务程序:

package com.example.mail;

import java.io.IOException; 
import java.util.Properties; 
import javax.mail.Session; 
import javax.mail.internet.MimeMessage; 
import javax.servlet.http.*; 
import javax.mail.Address;

public class MailHandlerServlet extends HttpServlet { 
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) 
            throws IOException { 
                Properties props = new Properties(); 
                Session session = Session.getDefaultInstance(props, null); 

            try{    
                MimeMessage message = new MimeMessage(session, req.getInputStream());
                String summary = message.getSubject();
                Address[] addresses = message.getFrom();
                String text = message.getContent().toString();
                System.out.println("Subject: " + summary);
                System.out.println("Sender: " + addresses);
                System.out.println("Text: " + text);  

                req.setAttribute("summary",summary);
                req.getRequestDispatcher("/mail.jsp").forward(req, resp); 


            } catch (Exception e) {
                e.printStackTrace();
            }
        }
}

mail.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
<head>
    <link type="text/css" rel="stylesheet" href="/stylesheets/main.css"/>
</head>

<body>

Hello World!

<p>E-Mail Summary '${summary}'.</p>

</body>
</html>

Web.xml:

<servlet>
  <servlet-name>mailhandler</servlet-name>
  <servlet-class>com.example.mail.MailHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>mailhandler</servlet-name>
  <url-pattern>/_ah/mail/string@appid.appspotmail.com</url-pattern>
</servlet-mapping>

如果有人可以帮助我,那就太好了。

【问题讨论】:

  • 如果我发送本地测试邮件,我现在会收到以下错误:消息发送失败错误 404 /_ah/mail/mail.jsp - 这似乎与 web.xml 有关,但我不确定。

标签: java jsp google-app-engine servlets


【解决方案1】:

您需要使用request.setAttribute("summary", summary);添加摘要作为请求属性,并且由于重定向不是服务器端,而是客户端,属性不再显示,您需要使用req.getRequestDispatcher("mail.jsp").forward(req, resp);

【讨论】:

  • 嘿 Zack,我更新了 Servlet 中的代码。但是当我向我的程序发送邮件时,我仍然只能在控制台中看到变量值,但汇总值不会显示在 mail.jsp 中。我还在调度程序中添加了一个 /,所以 ("/mail.jsp") 因为没有它我收到一个错误。
  • 把你的mail.jsp改成&lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&gt; &lt;%@ page import="java.util.List" %&gt; &lt;%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %&gt; &lt;html&gt; &lt;head&gt; &lt;link type="text/css" rel="stylesheet" href="/stylesheets/main.css"/&gt; &lt;/head&gt; &lt;body&gt; Hello World! &lt;p&gt;E-Mail Summary '${summary}'.&lt;/p&gt; &lt;/body&gt;
  • 在您通过尝试获取请求参数将名为summary的变量设置为null之前,客户端设置了一个参数,即请求属性设置为服务器端。
  • 嘿 Zack,我更改了 mail.jsp 并更新了代码,但如果我向该地址发送电子邮件,我仍然看不到文本,我仍然只能在终端中看到它。 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多