社区
J2ME
帖子详情
读外网数据
lijun51888
2006-03-16 05:53:23
读外网数据,就是想从一个网页上提取我想要的数据,那个网页不是我自己的,如:告诉你一个网址如mail.163.com,一个用户名及密码,怎么知道该用户有几封末读邮件.
...全文
122
4
打赏
收藏
读外网数据
读外网数据,就是想从一个网页上提取我想要的数据,那个网页不是我自己的,如:告诉你一个网址如mail.163.com,一个用户名及密码,怎么知道该用户有几封末读邮件.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
天外流星
2006-03-22
打赏
举报
回复
使用Java Mail API的方法,主要的操作过程为:
● 获取javax.mail.Session实例,并进而获得javax.mail.Store实例。
● 利用javax.mail.Store实例获得缺省收件箱(INBOX)javax.mail.Folder实例。
● 使用javax.mail.Folder对象提取新邮件,存储为javax.mail.Message对象数组。
● 创建javax.mail.FetchProfile以(潜在地)优化对特定邮件组成成分的提取。
这里的javax.mail.FetchProfile类提供邮件协议提供者可选参数,其目的是更有效地实现邮件组成成分的预提取。
一个例子:
<%@ page language="java" contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*,java.io.*,java.text.*" %>
<%@ page import="javax.mail.*,javax.mail.internet.*,javax.activation.*" %>
<%!
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;
}
%>
<%
Session mailsession=Session.getInstance(System.getProperties(),null);
mailsession.setDebug(false);
Store store=mailsession.getStore(protocol);//protocol为连接协议,IMAP或是POP
store.connect(mailhost,-1,user,passwd);//mailhost主机,user为用户名,passwd为密码
Folder folder = store.getFolder("INBOX");
try
{ folder.open(Folder.READ_WRITE);}
catch (MessagingException ex)
{ folder.open(Folder.READ_ONLY);}
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;
for(int i=0;i<request.getParameter("id").length();i++)//假设要阅读第ID个邮件。
id=id*10+(request.getParameter("id").charAt(i)-48);
for(j=0;j<id;j++);
message[j].setFlag(Flags.Flag.SEEN,true);
out.println("<table width=\"550\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" borderColorDark=\"#eaf0ff\" borderColorLight=\"#000000\" align=\"center\">");
out.println("<tr>");
out.println("<td width=60>主题:</td><td width=490> "+message[j].getSubject()+" </td></tr>");
String from=new String();
Address[] fr=message[j].getFrom();
if(fr!=null)
{ boolean tf=true;
for(int i=0;i<fr.length;i++)
from=from+getDisplayAddress(fr);
}
out.println("<tr><td width=60>来自:</td><td width=490> "+from+" </td></tr>");
out.println("<tr><td colspan=\"2\"> <div align=\"center\"><b>内容</b></div><br>");
Object o=message[j].getContent();
if (message[j].isMimeType("text/plain")) //若其Type为tex/plain就可直接读出了。
out.println((String)o+"</td>");
else if(message[j].isMimeType("multipart/*"))
{ Multipart mp=(Multipart)o;
Part part=mp.getBodyPart(0);
String msg=(String)part.getContent();
StringBuffer buf=new StringBuffer(msg.length()+6);
char ch=' ';
for(int i=0;i<msg.length();i++)//若遇到换行就转为<br>
{ 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.close(true);
store.close();
%>
在Folder对象中可以用getMessageCount()和getUnreadMessageCount()方法来取得总共有多少封信和共有多少封信未读。
天外流星
2006-03-22
打赏
举报
回复
用JAVA Mail实现.
lijun51888
2006-03-22
打赏
举报
回复
大虾,能不能具体一点啊,你对这个问题没法下手!
delphi我也蛮熟悉的,能不能把你做的发给我看一下啊!
lijun51888@163.com 这是我的邮箱!!!
谢谢,谢谢!!!
idilent
2006-03-16
打赏
举报
回复
登陆进取,找到网页内容,然后找出有用的数据的位置,取出这个数据。大致思路就是这样,以前用delphi做过。
Qt 实时
读
串口
数据
,并将
读
到的
数据
从网口发送出去
2. 将
读
到的
数据
从网口发送出去 3.开机启动 4. 没有界面 第一部分 配置Qt Pro文件 需要Qt +=serialport network 第二部分 -串口初始化 void Serial_To_Internet::initialize_SerialPort() { foreach (const ...
一文
读
懂
数据
库、
数据
仓库、
数据
平台、
数据
中台、
数据
湖
数据
库是用于存储、管理、维护和检索
数据
的...
数据
库类型-图2题外话:某些
数据
库(如 MongoDB)可以分为多个类别,因为它们支持不同的
数据
模型。此外,所提供的列表并不详尽,因为每个类别中还有许多其他
数据
库可用。
【Oracle】公安内网+互联网
数据
同步机制分析?
公安内网与互联网
数据
同步机制分析(这里指的是脱敏
数据
) 1、项目背景 原则上,公安内网
数据
是无法同步到互联网,也是不被允许的。...@2、
外网
通过SOAP+地址映射,主动进内网拉取
数据
。 3、重点讨论 ...
物理隔离与
数据
交换-网闸中的核心技术
为了保持内
外网
的物理隔离,所以在与内网连接的时候,一定与
外网
断开,但与
外网
连接的时候,一定与内网断开。所谓断开是只物理通讯的“高阻”状态或物理的停电,没有进行通讯的可能。 在内
外网
处理单元内都有...
什么是带外
数据
?
带外
数据
(out—of—band data),有时也称为加速
数据
(expedited data), 是指连接双方中的一方发生重要事情,想要迅速地通知对方。 这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)
数据
之前发送。...
J2ME
13,097
社区成员
26,492
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章