发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

求救:学习用JAVAMAIL编的邮件系统出问题了!

2004-12-17 14:36
赞助商链接

我是一名刚开始学习JAVAMAIL编程的新手,我照一本教科书上的做了个邮件系统,主要在接收带有附件的邮件时出了问题,源码如下:
//登陆
login.html
<HEAD>
<TITLE>MyMail</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<BODY>
<FORM Name="FM" ACTION="login.jsp" METHOD="POST">
<table width="55%" border="1" align="center"><tr>
<td width="37%">邮件主机名:</td>
<td width="63%"><INPUT NAME="host"></td>
</tr><tr>
<td width="37%">用户名:</td>
<td width="63%"><INPUT NAME="user"></td>
</tr><tr>
<td width="37%">密码o</td>
<td width="63%"><input type="password" name="password"></td>
</tr>
<tr><td colspan=2 align="center"><a href="javascript:FM.submit();">提交</a>
</td></tr>
</table>
</FORM>
</BODY></HTML>


login.jsp
<%
session.setAttribute("host",request.getParameter("host"));
session.setAttribute("user",request.getParameter("user"));
session.setAttribute("password",request.getParameter("password"));
response.sendRedirect("listfolder.jsp?action=list");
%>


//显示邮件列表的JSP页面
listfolder.jsp
<HTML><HEAD><TITLE>网络收件箱</TITLE>
<%@ page import=" javax.mail.*,java.util.*"
contentType="text/html;charset=GB2312"%>
</head><body>
<%
String action=request.getParameter("action");
String msg=request.getParameter("msg");
if (action==null) {
response.sendRedirect("login.html");
}else if (action.equals("logout")){
response.sendRedirect("login.html");
}else{
// Get a Properties object
Properties props = System.getProperties();
// Get a Session object
Session foldersession = Session.getDefaultInstance(props, null);
foldersession.setDebug(true);
URLName urln = new URLName("pop3://"+session.getAttribute("user")+":"
+session.getAttribute("password")+"@"+session.getAttribute("host")+"/");
Store store = foldersession.getStore(urln);
store.connect();

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);

if (action.equals("delete")){
if (msg!=null){
int imsg=Integer.parseInt(msg);
Message message = inbox.getMessage(imsg);
if(message != null){
message.setFlag(Flags.Flag.DELETED,true);
inbox.close(true);
}
}
store.close();
out.print("删除成功<br>");
out.print("<A HREF=\"listfolder.jsp?action=list\">返回收件箱</A>");
}else if (action.equals("list")){
int count = inbox.getMessageCount();
%>
<A HREF="listfolder.jsp?action=list">收件箱</A>
<A HREF="listfolder.jsp?action=logout" >退出</A>
<%
for(int i = 1;i <= count;i++){
Message message = inbox.getMessage(i);
if(!message.isSet(Flags.Flag.DELETED)) {
String title = message.getSubject();
String title2 = new String(title.getBytes("iso8859-1"), "gb2312");
%>
<form>
[<%=i%>]<A HREF="detail.jsp?msg=<%=i%>">标题:<%=title2%></A>
<A HREF="listfolder.jsp?action=delete&msg=<%=i%>">删除</a>
</form>

<% }
}
inbox.close(true);
store.close();
}
}
%>
</BODY></HTML>


//接收带有附件的Email
detail.jsp
<HTML><HEAD><TITLE>网络收件箱</TITLE>
<%@ page import=" javax.mail.*,java.util.*,java.io.*"
contentType="text/html;charset=GB2312"%>
</head><body>
<A HREF="listfolder.jsp?action=list">收件箱</A>
<A HREF="listfolder.jsp?action=logout" >退出</A>
<%
String msg=request.getParameter("msg");
// Get a Properties object
Properties props = System.getProperties();
// Get a Session object
Session foldersession = Session.getDefaultInstance(props, null);
foldersession.setDebug(true);
URLName urln = new URLName("pop3://"+session.getAttribute("user")+":"
+session.getAttribute("password")+"@"+session.getAttribute("host")+"/");
Store store = foldersession.getStore(urln);
store.connect();

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
if (msg!=null){
int imsg=Integer.parseInt(msg);
Message message = inbox.getMessage(imsg);
Address[] addresses;
%>
<table width=80% align="center">
<tr><td>发件人:</td><td>
<%
addresses=message.getFrom();
if(addresses != null)
for(int i = 0;i < addresses.length;i++)
out.print(addresses + "  ");
else
out.println("无");
%>
</td></tr>
<tr><td>收件人:</td><td>
<%
addresses=message.getRecipients(Message.RecipientType.TO);
if(addresses != null)
for(int i = 0;i < addresses.length;i++)
out.print(addresses + "  ");
else
out.println("无");
%>
</td></tr>
<tr><td>抄送:</td><td>
<%
addresses=message.getRecipients(Message.RecipientType.CC);
if(addresses != null) {
for(int i = 0;i < addresses.length;i++) {
out.print(addresses + "  ");
}
}
else {
out.println("无");
}
String title = message.getSubject();
String title2 = new String(title.getBytes("iso8859-1"), "gb2312");
%>
</td></tr>
<tr><td>标题:</td><td><%=title2%></td></tr>
<tr><td colspan=2>
<%
if(null == request.getParameter("part")){
if(message.isMimeType("multipart/*")){
Multipart multipart = (Multipart)message.getContent();
for(int i = 0;i < multipart.getCount();i++){
Part p = multipart.getBodyPart(i);
String disposition = p.getDisposition();
if ((disposition != null) &&
(disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE))) {
String filename = p.getFileName();
%>
<br><A HREF="detail.jsp?msg=<%=message.getMessageNumber()%>&part=<%=i%>">附件</A>
<%
}else if (disposition==null){
if (p.isMimeType("text/plain")) {
out.print(p.getContent());
}else {
//特殊附件
}
}
}
} else if(message.isMimeType("text/plain")) {
out.print(message.getContent());
}
} else {
int partnr = Integer.parseInt(request.getParameter("part"));
Part p;
if(partnr < 0)
p = message;
else{
Multipart multipart = (Multipart)message.getContent();
p = multipart.getBodyPart(partnr);
}
response.setContentType(p.getContentType());
if (p.getFileName()!=null){
response.setHeader("Content-Disposition", "attachment; filename=\"" + p.getFileName() + "\"");
}
OutputStream os = response.getOutputStream();
InputStream is = p.getInputStream();
int c = is.read();
while(c != -1) {
os.write(c); c = is.read();
}
}
%>
</td></tr>
</table>
<% }
inbox.close(true);
store.close();
%>
</BODY></HTML>


我想请教的问题是:listfolder.jsp中第7行"String msg=request.getParameter("msg");中的这"msg"以及detail.jsp中的
if(null == request.getParameter("part"))中的“part"从何而来??
请各位老师赐教!我感激不尽!




2004-12-18 12:13

建议结合Jms来学习JavaMail,参考我的书籍。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com