java mail接收邮件的示例代码
来源:互联网 发布:电脑桌面软件打不开 编辑:程序博客网 时间:2024/05/16 13:59
javamail收邮件很麻烦。要作很多判断,如附件中文,附件存放等。这段代码不算完整。仅作参考。
/**
* 存放收件到系统中
*
* @param sess
* @param pmm
* @return
*/
private boolean storeReceiveMail(Session sess, PlatMessageMailset pmm) throws Exception {
Store store = null;
POP3Folder folder = null;
long size = 0;
try {
URLName url = new URLName("pop3", pmm.getPop3(), 110, "", pmm.getUsername(), pmm.getPassword());
javax.mail.Session s = javax.mail.Session.getDefaultInstance(System.getProperties(), null);
store = s.getStore(url);
// if (folder == null) throw new Exception("No default folder");
//如果是收件箱
store.connect();
folder = (POP3Folder) store.getFolder("INBOX");
if (folder == null) throw new Exception("No POP3 INBOX");
//使用只读方式打开收件箱
folder.open(Folder.READ_WRITE);
//得到文件夹信息,获取邮件列表
FetchProfile profile = new FetchProfile();
profile.add(UIDFolder.FetchProfileItem.UID);
profile.add(FetchProfile.Item.ENVELOPE);
Message[] msgs = folder.getMessages();
folder.fetch(msgs, profile);
for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
Message message = (msgs[msgNum]);
if (!message.getFlags().contains(Flags.Flag.SEEN)) {
PlatMessage pm = new PlatMessage();
pm.setReceiver(pmm.getOwner());
pm.setRec_email(pmm.getMailaddr());
pm.setSend_date(message.getSentDate());
pm.setFolder("INBOX");
pm.setMsg_tag(2);
pm.setCreate_date(new Date());
pm.setIstag(0);
pm.setAcctag(0);
///////////////////////////////////存放邮件
//获得发送邮件地址
String text = "";
String from = ((InternetAddress) message.getFrom()[0]).getPersonal();
//InternetAddress ia = new InternetAddress(from);
if (from == null) from = ((InternetAddress) message.getFrom()[0]).getAddress();
pm.setSender(from);
//获取主题
String subject = message.getSubject();
pm.setMsg_title(subject);
System.out.println("收取邮件,来自:" + from + "。主题:" + subject);
//获取信息对象
Part messagePart = message;
Object content = messagePart.getContent();
String acc_id = "";
System.out.println("content" + content);
if (content instanceof String) {
//附件
text = String.valueOf(content);
System.out.println("这儿" + text);
} else if (content instanceof Multipart) {
Multipart mp = ((Multipart) content);
for (int k = 0; k < mp.getCount(); k++) {
BodyPart bp = mp.getBodyPart(k);
Object t = bp.getContent();
if (t instanceof String) {
text = (String.valueOf(t));
System.out.println("这儿1" + text);
} else if (t instanceof InputStream) {
String physical = UUIDHex.getUUIDHex();
FileControl fc = new FileControl();
fc.setMyFile(new File(MESSAGE_ACC_PATH + "\\" + physical));
fc.createFile();
fc.writeFile(bp.getInputStream());
PlatMsgAccessary pma = new PlatMsgAccessary();
pma.setFile_name(StringUtil.getString(MailUtil.decodeText(bp.getFileName()), "未知文件名"));
pma.setPhysical(physical);
pma.setFile_size(bp.getSize());
sess.save(pma);
acc_id += physical + "||";
System.out.println("收取附件,名称:" + MailUtil.decodeText(bp.getFileName()) + "。大小:" + bp.getSize());
size += bp.getSize();
pm.setAcctag(1);
}
}
}
pm.setAcc_id(acc_id);
/**
//获取content类型
String contentType = messagePart.getContentType();
//如果邮件内容是纯文本或者是HTML,那么打印出信息
String context = "";
if (contentType.startsWith("text/plain") ||
contentType.startsWith("text/html")) {
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
context += thisLine;
while (thisLine != null) {
thisLine = reader.readLine();
context += thisLine;
}
size += context.length();
}
**/
pm.setMsg_size(message.getSize());
pm.setMsg_sys("SSEIP");
// pm.setMsg_text(context);
sess.save(pm);
sess.flush();
System.out.println("邮件正文:" + text);
saveMessageText(sess, pm.getMsg_id(), text);//
if (pmm.getDeltag() == 1) {
message.setFlag(Flags.Flag.DELETED, true);
} else {
message.setFlag(Flags.Flag.SEEN, true);
}
}
// folder.expunge();
////////////////////////////////////////结束
}
return true;
} catch (Exception ex) {
throw ex;
} finally {
if (folder != null) {
folder.close(true);
}
store.close();
}
}
- java mail接收邮件的示例代码
- Java mail 发送接收邮件
- Java Mail(一):telnet邮件的发送与接收原理
- java mail 实践三(邮件接收)
- 【Java mail 入门教程】第三讲 接收邮件
- 【Java mail 入门教程】第三讲 接收邮件
- 【Java mail 入门教程】第三讲 接收邮件
- java mail 接收qq邮件设置
- Java mail接收邮件 回复邮件 转发邮件
- Java mail接收邮件 回复邮件 转发邮件
- Javax Mail发送邮件完整代码示例
- java发送mail代码示例
- java mail 搜索、过滤接收邮件,删除邮件
- 用java mail 发邮件的代码,支持群发
- [转]JAVA接收邮件代码
- java mail邮件发送功能代码
- JSP中用Java Mail发送和接收邮件
- Java 邮件发送接收POP3ReceiveServiceTest,SendmailServiceTest示例
- Visual Studio 调试小技巧(1)-根据字符串内容添加断点
- 怎么样使用JavaMail发送和接收邮件
- 查看邮件信息列表
- 页表结构
- ViewContext
- java mail接收邮件的示例代码
- remove_if用法
- Javamail 邮件接收程序
- STL容器(vector,list)--数组和链表的区别
- Java学习从入门到精通!
- servlet/jsp中的一些路径问题
- JAVA
- 海豚浏览器营销负责人Edith Yeung:如何在美国市场发布和推广移动应用
- JSP 内置对象