小弟用javamail接收邮件,搞了很久,但是没成功,能连上服务器,且显示出了主题,时间,但是没办法显示文本,大家帮一下忙,我搞了好久还是不懂,谢谢了大家.
代码如下(比较粗糙)
import javax.swing.*;
import javax.mail.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class Poptest extends JFrame{
JButton b=null;
String host="pop.163.com";
String user="xxx"; //请在这里设置用户,密码//
String password="xxx";
JPanel list=null;
JPanel text=null;
JList messlist=null;
JTextArea content=null;
JScrollPane p=null;
Vector v;
int flag=1;
public Poptest(){
//--------------------------- 界面部分------------------------/ /
b=new JButton("打开附件");
list=new JPanel();
text=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JButton exit=new JButton("退出");
content=new JTextArea(8,45);
p=new JScrollPane(content);
Container con=getContentPane();
v=new Vector();
con.setLayout(new GridLayout(2,1));
con.add(list);
con.add(text);
text.setBorder(BorderFactory.createTitledBorder("邮件內容"));
text.add(p1,BorderLayout.CENTER);
text.add(p2,BorderLayout.SOUTH);
p1.add(p);
p2.setLayout(new FlowLayout());
p2.add(b);
p2.add(exit);
b.setEnabled(false);
messlist=new JList(v);
list.setBorder(BorderFactory.createTitledBorder("邮件列表"));
list.setLayout(new GridLayout(1,1));
list.add(messlist);
setSize(600,500);
Dimension screen=getToolkit().getScreenSize();
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);
//----------------连接服务器,并显示出邮件主题,日期限--------//
try{
java.util.Properties props=new java.util.Properties();
props.put("mail.pop3.host",host);
Session mailSession=Session.getDefaultInstance(props);
System.out.println("连接主机:"+host);
Store mesgStore=mailSession.getStore("pop3");
mesgStore.connect(host,user,password);
System.out.println("连接中");
Folder inbox=mesgStore.getDefaultFolder().getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message[] msgs=inbox.getMessages();
FetchProfile profile=new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
inbox.fetch(msgs,profile);
int count =inbox.getMessageCount();
for(int i=0;i<count;i++){
v.addElement(msgs[i].getMessageNumber()+"---"+"主题:"+msgs[i].getSubject()+
"---"+msgs[i].getSentDate());
}
if(v.isEmpty()){
v.addElement("暂时没有新邮件");
b.setEnabled(false);
flag=0;
}
inbox.close(false);
mesgStore.close();
System.out.print("断开连接!");
}catch(javax.mail.MessagingException e){
e.printStackTrace();
}
//---------点击jist某项,显示出邮件内容--------------------------------//
messlist.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
int index;
if(flag==1){
index=messlist.locationToIndex(e.getPoint());
display(host,user,password,index+1);//此方法为显示邮件信息,具体在下面//
}
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
show();
}
代码如下(比较粗糙)
import javax.swing.*;
import javax.mail.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class Poptest extends JFrame{
JButton b=null;
String host="pop.163.com";
String user="xxx"; //请在这里设置用户,密码//
String password="xxx";
JPanel list=null;
JPanel text=null;
JList messlist=null;
JTextArea content=null;
JScrollPane p=null;
Vector v;
int flag=1;
public Poptest(){
//--------------------------- 界面部分------------------------/ /
b=new JButton("打开附件");
list=new JPanel();
text=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JButton exit=new JButton("退出");
content=new JTextArea(8,45);
p=new JScrollPane(content);
Container con=getContentPane();
v=new Vector();
con.setLayout(new GridLayout(2,1));
con.add(list);
con.add(text);
text.setBorder(BorderFactory.createTitledBorder("邮件內容"));
text.add(p1,BorderLayout.CENTER);
text.add(p2,BorderLayout.SOUTH);
p1.add(p);
p2.setLayout(new FlowLayout());
p2.add(b);
p2.add(exit);
b.setEnabled(false);
messlist=new JList(v);
list.setBorder(BorderFactory.createTitledBorder("邮件列表"));
list.setLayout(new GridLayout(1,1));
list.add(messlist);
setSize(600,500);
Dimension screen=getToolkit().getScreenSize();
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);
//----------------连接服务器,并显示出邮件主题,日期限--------//
try{
java.util.Properties props=new java.util.Properties();
props.put("mail.pop3.host",host);
Session mailSession=Session.getDefaultInstance(props);
System.out.println("连接主机:"+host);
Store mesgStore=mailSession.getStore("pop3");
mesgStore.connect(host,user,password);
System.out.println("连接中");
Folder inbox=mesgStore.getDefaultFolder().getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message[] msgs=inbox.getMessages();
FetchProfile profile=new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
inbox.fetch(msgs,profile);
int count =inbox.getMessageCount();
for(int i=0;i<count;i++){
v.addElement(msgs[i].getMessageNumber()+"---"+"主题:"+msgs[i].getSubject()+
"---"+msgs[i].getSentDate());
}
if(v.isEmpty()){
v.addElement("暂时没有新邮件");
b.setEnabled(false);
flag=0;
}
inbox.close(false);
mesgStore.close();
System.out.print("断开连接!");
}catch(javax.mail.MessagingException e){
e.printStackTrace();
}
//---------点击jist某项,显示出邮件内容--------------------------------//
messlist.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
int index;
if(flag==1){
index=messlist.locationToIndex(e.getPoint());
display(host,user,password,index+1);//此方法为显示邮件信息,具体在下面//
}
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
show();
}
public void display(String host,String user,String password,int msgnum){
try{
System.out.print("再次连接服务器");
java.util.Properties props=new java.util.Properties();
Session mailSession=Session.getDefaultInstance(props);
Store mesgStore=mailSession.getStore("pop3");
mesgStore.connect(host,user,password);
Folder inbox=mesgStore.getDefaultFolder().getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
if(msgnum<=inbox.getMessageCount()){
Message theMessage=inbox.getMessage(msgnum);
if(theMessage.isMimeType("text/plain")){
String text=(String) theMessage.getContent();
content.setText(text);
}
inbox.close(false);
mesgStore.close();
}
}catch(Exception e1){
e1.printStackTrace();
}
}
public static void main(String agrs[]){
new Poptest();
}
}