我是问:java能与pop3邮件服务器连接,收邮件嘛? java能与pop3邮件服务器连接,收邮件嘛?如果要实现,简单嘛?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package org.redtroy;import javax.mail.*;import java.util.Properties;import java.io.*;import javax.mail.internet.MimeBodyPart;public class MailReader { static Store store; static Folder folder; public MailReader() { } public static Message[] getMessages(String host, String username, String psw) throws Exception { Properties p = System.getProperties(); Session session = Session.getDefaultInstance(p, null); // session.setDebug(true); store = session.getStore("pop3"); //pop3 or IMAP here store.connect(host, username, psw); folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); return folder.getMessages(); } public static void readMessage(Message m) throws Exception { Multipart mp = (Multipart) m.getContent(); for (int j = 0; j < mp.getCount(); j++) { Part part = mp.getBodyPart(j); String disposition = part.getDisposition(); if (disposition != null) { if (disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE)) { InputStream in = part.getInputStream(); //System.out.println("FileName:"+Base64.decode(part.getFileName())); write2File(in,"C:\\"+part.getFileName());//parg.getFileName()需要进行处理后用base64解码 in.close(); } } if(disposition==null){ MimeBodyPart mbp=(MimeBodyPart)part; if(mbp.isMimeType("text/plain")){ System.out.println("该邮件内容:"); System.out.println( ((String)mbp.getContent())); } } } } public static void write2File(InputStream in, String path) throws Exception { byte[] b = new byte[100]; int len; OutputStream out=new FileOutputStream(new File(path)); while ( (len = in.read(b)) > 0) { out.write(b,0,len); } out.close(); } public static void close() throws Exception { folder.close(false); store.close(); } public static void main(String[] args) { try { Message[] messages = MailReader.getMessages("pop3.126.com", "redtroy", "ZagHnJ82"); BufferedReader reader = new BufferedReader(new InputStreamReader(System. in)); for (int i = 0; i < messages.length; i++) { System.out.println("来自:" + messages[i].getFrom() + "-----主题:" + messages[i].getSubject()); // System.out.println("是否显示该邮件内容[yes显示no不显示]"); MailReader.readMessage(messages[i]); // String cmd=reader.readLine(); /* if(cmd.equalsIgnoreCase("yes")){ messages[i].writeTo(System.out); } }else if(cmd.equalsIgnoreCase("no")){ continue; }*/ } MailReader.close(); } catch (Exception e) { e.printStackTrace(); } }} 可以的,适用jmail,建议先学习一下jmail包 关于结束进程后焦点没有返回的问题 java控件 一道内部类的题目 java中图片文件头的处理 java的类太多了,学起来真难啊. 一个问题解决不了 怎么样将double数据转成String型,且String变量不会显视科学计数法? JB中是不是不能使用断言,直接就提示语法错。有没有其它方法? J2SE,J2EE,J2ME,EJB,有什么区别 是否设计为共通函数 两个问题30分,大家帮帮忙。 网络编程问题:怎么在一个客户端接受多个服务器端传来的信息?
import java.util.Properties;
import java.io.*;
import javax.mail.internet.MimeBodyPart;
public class MailReader {
static Store store;
static Folder folder;
public MailReader() {
} public static Message[] getMessages(String host, String username, String psw) throws
Exception {
Properties p = System.getProperties();
Session session = Session.getDefaultInstance(p, null);
// session.setDebug(true);
store = session.getStore("pop3"); //pop3 or IMAP here
store.connect(host, username, psw);
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
return folder.getMessages();
} public static void readMessage(Message m) throws Exception {
Multipart mp = (Multipart) m.getContent();
for (int j = 0; j < mp.getCount(); j++) {
Part part = mp.getBodyPart(j);
String disposition = part.getDisposition();
if (disposition != null) {
if (disposition.equals(Part.ATTACHMENT) ||
disposition.equals(Part.INLINE)) {
InputStream in = part.getInputStream();
//System.out.println("FileName:"+Base64.decode(part.getFileName()));
write2File(in,"C:\\"+part.getFileName());//parg.getFileName()需要进行处理后用base64解码
in.close();
}
}
if(disposition==null){
MimeBodyPart mbp=(MimeBodyPart)part;
if(mbp.isMimeType("text/plain")){
System.out.println("该邮件内容:");
System.out.println( ((String)mbp.getContent()));
}
}
}
} public static void write2File(InputStream in, String path) throws Exception {
byte[] b = new byte[100];
int len;
OutputStream out=new FileOutputStream(new File(path));
while ( (len = in.read(b)) > 0) {
out.write(b,0,len);
}
out.close();
} public static void close() throws Exception {
folder.close(false);
store.close();
} public static void main(String[] args) {
try {
Message[] messages = MailReader.getMessages("pop3.126.com", "redtroy",
"ZagHnJ82");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.
in));
for (int i = 0; i < messages.length; i++) {
System.out.println("来自:" + messages[i].getFrom() + "-----主题:" +
messages[i].getSubject());
// System.out.println("是否显示该邮件内容[yes显示no不显示]");
MailReader.readMessage(messages[i]);
// String cmd=reader.readLine();
/* if(cmd.equalsIgnoreCase("yes")){
messages[i].writeTo(System.out);
}
}else if(cmd.equalsIgnoreCase("no")){
continue;
}*/
}
MailReader.close();
}
catch (Exception e) {
e.printStackTrace();
}
}}