JSP中的邮件收发(2)

mail_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.net.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查看邮件列表</title>
</head>
<body>
<div align="center">
<h1>查看邮件列表</h1>

<%
Session mailsession = Session.getInstance(System.getProperties(),null);
mailsession.setDebug(false);
//protocol为连接协议,IMAP或是POP
Store store = mailsession.getStore("pop3");
//pop.126.com是主机
store.connect("pop.126.com", "scau2008", "1351035598");
//获得邮件服务器上INBOX文件夹中的文件信息
Folder folder = store.getFolder("INBOX");
try{
folder.open(Folder.READ_WRITE);
System.out.println(0);
}
catch(MessagingException ex){
folder.open(Folder.READ_ONLY);
System.out.println(1);
}
System.out.println(2);
//获得收件箱中的邮件信息,将他们保存到Message形式的栈中
Message message[] = folder.getMessages();
out.println("<p align=center>邮箱[email protected]的收件箱中共有"+message.length+"件邮件</p>");
out.println("<div align=center>");
out.println("<table width=95% border=1 cellspacing=1 cellpadding=4>");
out.println("<tr>");
out.println("<th width=15% align=center>编号</th>");
out.println("<th width=15% align=center>标题</th>");
out.println("<th width=15% align=center>发信人</th>");
out.println("</tr>");

//循环显示邮件信息
for(int i = 0; i < message.length; i++){
//获得发信人信息
if(!message[i].getFolder().isOpen()) //判断是否open
message[i].getFolder().open(Folder.READ_WRITE); //如果close,就重新open
//String from = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String from = ((InternetAddress)message[i].getFrom()[0]).getPersonal();

if(from == null){
from = ((InternetAddress)message[i].getFrom()[0]).getAddress();
}
//显示邮件信息
out.println("<tr>");
out.println("<td width=15% align=center>"+(i+1)+"</td>");
out.println("<td width=60% align=left>&nbsp;<a href=‘mail_detail.jsp?id="+i+"‘>"
+message[i].getSubject()+"</a></td>");
out.println("<td width=25% align=left>&nbsp;"+from+"</td>");
out.println("</tr>");

//关闭Folder对象和Store对象
folder.close(true);
store.close();
}
%>
</div>
</body>
</html>

mail_detail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.net.*" %>
<%!
private String getDisplayAddress(Address a){
//转换RFC822为Unicode
String pers = null;
String addr = null;
if(a instanceof InternetAddress && ((pers=((InternetAddress)a).getPersonal())!=null))
addr = pers+" "+"<"+((InternetAddress)a).getAddress()+">";
else
addr = a.toString();
return addr;
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查看邮件内容</title>
</head>
<body>
<div align="center">
<h1>查看邮件内容</h1>
<%
Session mailsession = Session.getInstance(System.getProperties(),null);
mailsession.setDebug(false);
//protocol为连接协议,TMAP或是POP
Store store = mailsession.getStore("pop3");
//
store.connect("pop3.126.com", "scau2008", "1351035598");
//获得邮件服务器上INBOX文件夹中的文件信息
Folder folder = store.getFolder("INBOX");
try{
folder.open(Folder.READ_WRITE);
}
catch(MessagingException ex){
folder.open(Folder.READ_ONLY);
}

//获得收件箱中邮件信息,将他们保存到Message形式的栈中
Message message[] = folder.getMessages();
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(message, fp);
int id=0,j=0;

//假设要阅读第ID个邮件
for(int i = 0; i < request.getParameter("id").length(); i++){
id = id * 10+(request.getParameter("id").charAt(i)-48);
}

for(j=0;j<id;j++){
;
}
message[j].setFlag(Flags.Flag.SEEN, true);
out.println("<h1 align=center>查看邮件内容</h1>");
out.println("<table width=700 border=1 cellspacing=0 cellpadding=0>");
out.println("<tr>");
out.println("<td width=100 height=25>标题:</td>");
out.println("<td width=600 height=25 align=left>"+message[j].getSubject()+"</td>");
out.println("</tr>");

//获取发信人信息
String from = new String();
Address[] fr = message[j].getFrom();
if(fr != null){
for(int i = 0; i < fr.length; i++)
from = from+getDisplayAddress(fr[i]);
}
out.println("<tr>");
out.println("<td height=25>发信人:</td>");
out.println("<td height=25 align=left>"+from+"</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>邮件内容:</td>");
out.println("<td align=left>");

//获取要显示的邮件内容
Object o = message[j].getContent();
//若其Type为text/plain就可直接读出了
if(message[j].isMimeType("text/plain")){
out.println((String)o+"</td>");
}else if(message[j].isMimeType("multipart/*")){
Multipart mp = (Multipart)o;
BodyPart part = mp.getBodyPart(0);
String msg = (String)part.getContent();
StringBuffer buf = new StringBuffer(msg.length()+6);
char ch = ‘ ‘;
//若遇到换行就转为<br>
for(int i = 0; i < msg.length(); i++){
ch = msg.charAt(i);
if(ch==‘\n‘){
buf.append("<br>");
}else{
buf.append(ch);
}
}
out.println(buf.toString());
}else{
out.println("暂时无法显示:"+message[j].getContentType());
}

out.println("</tr>");
out.println("<table>");
//关闭Folder对象和Store对象
folder.close(true);
store.close();
%>
</div>
</body>
</html>

JSP中的邮件收发(2)

时间: 2024-10-13 13:03:21

JSP中的邮件收发(2)的相关文章

JSP中的邮件收发(1)

JavaMail API是发送和接收电子邮件信息的可选包,将下载到的压缩包解压,将解压目录中的mail.jar和lib文件夹下面的所有jar类包都拷贝到站点类路径中,此外,还需下载JavaBeans Activation Framework,因为这个框架是JavaMail API锁需要的,将解压目录下的activation.jar文件拷贝到站点类路径中 一.邮件发送的实现 1.从静态页面中获得信息 String address = request.xxx; String subject = re

自定义JSP中的Taglib标签之四自定义标签中的Function函数

转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于taglib中的<tag>的基本功能已经介绍完毕了,在taglib中我们发现有一个标签叫做<function>,这次简单介绍<function>标签的基本用法,<function>标签可以做什么呢?它可以让我们在jsp用直接调用某个方法,根据自定义的方法返回指定

jsp 中声明方法的使用

1.在"<%!"和"%>"之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效.这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放内存.当多个客户同时请求一个JSP页面时,他们可能使用方法操作成员变量,对这种情况应给予重视. 解决办法:通过synchronized方法操作一个成员变量来实现一个计数器 <%@ page contentType="text/html;c

【JSP】JSP中的Java脚本

前言 现代Web开发中,在JSP中嵌入Java脚本不是推荐的做法,因为这样 不利于代码的维护.有很多好的,替代的方法避免在JSP中写Java脚本.本文仅做为JSP体系技术的一个了解. 类成员定义 1.将定义的代码放在<%! %>之间即可. 定义的成员将被转换为servlet类的成员. 2.可以定义任何成员方法和成员字段,static 成员 或者 实例成员都可以. 3.注意JSP/Servlet是工作在多线程环境下的,定义的成员变量要注意线程安全问题.一般建议使用_jspService方法中 的

用Servlet与JSP中实现分页查询

这个题目,总共分4个部分 1.查询总页数,把页码显示在页面上 2.把每页的内容显示在页面上 3.首页,尾页,上一页,下一页 4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页) 详解如下:(一部分代码在servlet中,一部分代码在JSP中) Servlet package com.lianxi; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException;

JSP中设置超链接失效点击进入下载页面的问题

在JSP中设置超链接标签体后点击发现进入不了页面而是进入了下载页面,此时需要在你新建的超链接对应的Servlet中查看response响应头是否有设置,设置是否成功,如下代码: 在JSP页面设置如下超链接发现进入不了, <a href="<%= request.getContextPath()%>/servlet/BuyServlet?prod=电视">电视</a><br> 此时进入BuyServlet类中查看response的应答头的设

jsp中头的导入两种方式区别

1.<jsp:include page="top.jsp">先将top.jsp中的java脚本和jsp指令执行完毕以后再讲top.jsp页面加入面中 2.<%@ include file="top.jsp"%>静态读取:则是将top.jsp的整个页面不加解析(无论是脚本还是指令)统统读入到引用页面中,然后引用页面一起进行解析(即开始执行脚本和指令) 3.区别:其实上边的两条就是区别,但是需要注意的是用<%@ include file=&

JSP中两种include的区别

首先说明这两种都是什么: <%@ include file=”relativeURI”%> 可以叫作静态include(静态包含),是jsp指令中的一种,(JSP指令控制JSP编译器如何去生成servlet(servlet是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类别,一般情况下,人们将Servlet理解为后者.-维基百科) <js

Jsp中三种注释

在Jsp中有三种注释: 一.HTML注释 1.输出注释<!--   -->客户端查看源码时是可以看见的. 二.Java注释 1. //单行注释 2. /*多行注释*/ 三.JSP页注释 1.<%--    --%>隐藏注释. 2.<%//      %>由浏览器忽略. 3.<%/*    */%>由浏览器忽略. (PS: <%    %>这里添加的是代码片段. <%!   %>这里添加的是Java方法. <%=  %>相当