在 jsp 中使用 imap 从 gmail 读取电子邮件

Posted

技术标签:

【中文标题】在 jsp 中使用 imap 从 gmail 读取电子邮件【英文标题】:read email form the gmail using imap in jsp 【发布时间】:2013-04-12 19:54:36 【问题描述】:

我想使用带有 servlet 和 jsp 的 imap 阅读来自 gmail 的电子邮件。 但我不能这样做。我进入了简单的 Java 类。但是,当我尝试将此代码放入 jsp 和 servlet 时,都会出现错误。 我使用了以下代码。

试试 java.util.Properties 属性 = System.getProperties(); properties.setProperty("mail.store.protocol", "imaps"); javax.mail.Session s = javax.mail.Session.getDefaultInstance(properties, null); //创建会话实例 System.out.println("已连接"); javax.mail.Store store = s.getStore("imaps");//创建存储实例 store.connect("pop.gmail.com", "studentusecmp@gmail.com", "##########"); //设置你的用户名和密码 System.out.println(store); 文件夹收件箱 = store.getFolder("inbox"); //设置你想阅读邮件的文件夹 inbox.open(Folder.READ_WRITE);//设置收件箱的访问类型 Message messages[] = inbox.getMessages();// 获取收件箱消息 对于 (int i = 0; 我 System.out.println("发件人:" + messages[i].getFrom()[0]); //打印 发件人的电子邮件 ID System.out.println("Sub : " + 消息[i].getSubject()); //打印邮件主题 System.out.println("接收日期:"+messages[i].getReceivedDate()); System.out.println("描述:"+messages[i].getDescription()); catch(Exception e) e.printStackTrace();

和错误

堆栈跟踪:在 org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97) 在 org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) 在 org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:374) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source)

我做错了什么?请帮助我。 谢谢。 -chintan

【问题讨论】:

两条建议 - 1. 请将您的代码包装在正确的标签中。在这一点上很难挽救它。 2 - 如果此代码是从 JSP 运行的,请帮大家一个忙,并将其移至服务组件。目前看来代码甚至无法编译。 javacError 我用 script-let 标签包装我的代码。有什么影响吗? 您不应在发布问题时发布密码。 谢谢。我忘了,下次我会小心的。再次感谢。@Sao @chintan 请做正确的事并立即更改您的密码。它现在在这里不可见的事实并不意味着它不再存在于数据库中。 【参考方案1】:

好的。经过一番谷歌搜索,我得到了答案。并逐步检查代码。它在 /WebContent/lib/ 文件夹中找不到 jar 文件。我手动放的。它工作正常。

【讨论】:

以上是关于在 jsp 中使用 imap 从 gmail 读取电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

JavaMail 使用 IMAP 读取最近的未读邮件

使用 IMAP 阅读 gmail 失败

使用 IMAP(javamail API)从 gmail 访问电子邮件

如何从 imap gmail 解码 utf-8

使用 Python IMAP 阅读 Gmail 邮件

如何在Python中执行IMAP搜索(使用Gmail和imaplib)?