1、javamail实现大全javamail实现大全package org.mail.core; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class ReceiveMail private MimeMessage mimeMessage = null; private String saveAttachPath = ; / 附件下载后的存放目录 private StringBuffer bodytext =
2、new StringBuffer(); / 存放邮件内容的StringBuffer对象 private String dateformat = yy-MM-dd HH:mm; / 默认的日前显示格式 /* * 构造函数,初始化一个MimeMessage对象 */ public ReceiveMail() public ReceiveMail(MimeMessage mimeMessage) this.mimeMessage = mimeMessage; System.out.println(create a ReceiveMail object.); public void setMimeMe
3、ssage(MimeMessage mimeMessage) this.mimeMessage = mimeMessage; /* * * 获得发件人的地址和姓名 */ public String getFrom() throws Exception InternetAddress address = (InternetAddress) mimeMessage.getFrom(); String from = address0.getAddress(); if (from = null) from = ; String personal = address0.getPersonal(); if
4、 (personal = null) personal = ; String fromaddr = personal + ; return fromaddr; /* * * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 * to-收件人 cc-抄送人地址 * bcc-密送人地址 */ public String getMailAddress(String type) throws Exception String mailaddr = ; String addtype = type.toUpperCase(); InternetAddress address = null
5、; if (addtype.equals(TO) | addtype.equals(CC) | addtype.equals(BCC) if (addtype.equals(TO) address = (InternetAddress) mimeMessage .getRecipients(Message.RecipientType.TO); else if (addtype.equals(CC) address = (InternetAddress) mimeMessage .getRecipients(Message.RecipientType.CC); else address = (I
6、nternetAddress) mimeMessage .getRecipients(Message.RecipientType.BCC); if (address != null) for (int i = 0; i address.length; i+) String email = addressi.getAddress(); if (email = null) email = ; else email = MimeUtility.decodeText(email); String personal = addressi.getPersonal(); if (personal = nul
7、l) personal = ; else personal = MimeUtility.decodeText(personal); String compositeto = personal + ; mailaddr += , + compositeto; mailaddr = mailaddr.substring(1); else throw new Exception(Error emailaddr type!); return mailaddr; /* * * 获得邮件主题 */ public String getSubject() throws MessagingException S
8、tring subject = ; try subject = MimeUtility.decodeText(mimeMessage.getSubject(); if (subject = null) subject = ; catch (Exception exce) return subject; /* * * 获得邮件发送日期 */ public String getSentDate() throws Exception Date sentdate = mimeMessage.getSentDate(); SimpleDateFormat format = new SimpleDateF
9、ormat(dateformat); return format.format(sentdate); /* * * 获得邮件正文内容 */ public String getBodyText() return bodytext.toString(); /* * * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 * * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 */ public void getMailContent(Part part) throws Exception String contenttype = part.getCon
10、tentType(); int nameindex = contenttype.indexOf(name); boolean conname = false; if (nameindex != -1) conname = true; System.out.println(CONTENTTYPE: + contenttype); if (part.isMimeType(text/plain) & !conname) bodytext.append(String) part.getContent(); else if (part.isMimeType(text/html) & !conname)
11、bodytext.append(String) part.getContent(); else if (part.isMimeType(multipart/*) Multipart multipart = (Multipart) part.getContent(); int counts = multipart.getCount(); for (int i = 0; i counts; i+) getMailContent(multipart.getBodyPart(i); else if (part.isMimeType(message/rfc822) getMailContent(Part
12、) part.getContent(); else /* * * 判断此邮件是否需要回执,如果需要回执返回true,否则返回false */ public boolean getReplySign() throws MessagingException boolean replysign = false; String needreply = mimeMessage .getHeader(Disposition-Notification-To); if (needreply != null) replysign = true; return replysign; /* * * 获得此邮件的Me
13、ssage-ID */ public String getMessageId() throws MessagingException return mimeMessage.getMessageID(); /* * * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】 */ public boolean isNew() throws MessagingException boolean isnew = false; Flags flags = (Message) mimeMessage).getFlags(); Flags.Flag flag = flags.getSyste
14、mFlags(); System.out.println(flagss length: + flag.length); for (int i = 0; i flag.length; i+) if (flagi = Flags.Flag.SEEN) isnew = true; System.out.println(seen Message.); break; return isnew; /* * * 判断此邮件是否包含附件 */ public boolean isContainAttach(Part part) throws Exception boolean attachflag = fals
15、e; String contentType = part.getContentType(); if (part.isMimeType(multipart/*) Multipart mp = (Multipart) part.getContent(); for (int i = 0; i mp.getCount(); i+) BodyPart mpart = mp.getBodyPart(i); String disposition = mpart.getDisposition(); if (disposition != null) & (disposition.equals(Part.ATTA
16、CHMENT) | (disposition .equals(Part.INLINE) attachflag = true; else if (mpart.isMimeType(multipart/*) attachflag = isContainAttach(Part) mpart); else String contype = mpart.getContentType(); if (contype.toLowerCase().indexOf(application) != -1) attachflag = true; if (contype.toLowerCase().indexOf(na
17、me) != -1) attachflag = true; else if (part.isMimeType(message/rfc822) attachflag = isContainAttach(Part) part.getContent(); return attachflag; /* * * 【保存附件】 */ public void saveAttachMent(Part part) throws Exception String fileName = ; if (part.isMimeType(multipart/*) Multipart mp = (Multipart) part
18、.getContent(); for (int i = 0; i mp.getCount(); i+) BodyPart mpart = mp.getBodyPart(i); String disposition = mpart.getDisposition(); if (disposition != null) & (disposition.equals(Part.ATTACHMENT) | (disposition .equals(Part.INLINE) fileName = mpart.getFileName(); if (fileName.toLowerCase().indexOf(
19、gb2312) != -1) fileName = MimeUtility.decodeText(fileName); saveFile(fileName, mpart.getInputStream(); else if (mpart.isMimeType(multipart/*) saveAttachMent(mpart); else fileName = mpart.getFileName(); if (fileName != null) & (fileName.toLowerCase().indexOf(GB2312) != -1) fileName = MimeUtility.deco
20、deText(fileName); saveFile(fileName, mpart.getInputStream(); else if (part.isMimeType(message/rfc822) saveAttachMent(Part) part.getContent(); /* * * 【设置附件存放路径】 */ public void setAttachPath(String attachpath) this.saveAttachPath = attachpath; /* * * 【设置日期显示格式】 */ public void setDateFormat(String form
21、at) throws Exception this.dateformat = format; /* * * 【获得附件存放路径】 */ public String getAttachPath() return saveAttachPath; /* * * 【真正的保存附件到指定目录里】 */ private void saveFile(String fileName, InputStream in) throws Exception String osName = System.getProperty(os.name); String storedir = getAttachPath(); S
22、tring separator = ; if (osName = null) osName = ; if (osName.toLowerCase().indexOf(win) != -1) separator = ; if (storedir = null | storedir.equals() storedir = c:tmp; else separator = /; storedir = /tmp; File storefile = new File(storedir + separator + fileName); System.out.println(storefiles path:
23、+ storefile.toString(); / for(int i=0;storefile.exists();i+) / storefile = new File(storedir+separator+fileName+i); / BufferedOutputStream bos = null; BufferedInputStream bis = null; try bos = new BufferedOutputStream(new FileOutputStream(storefile); bis = new BufferedInputStream(in); int c; while (
24、c = bis.read() != -1) bos.write(c); bos.flush(); catch (Exception exception) exception.printStackTrace(); throw new Exception(文件保存失败!); finally bos.close(); bis.close(); /* * * ReceiveMail类测试 */ public static void main(String args) throws Exception String host = ; String username = demo;/您的邮箱用户名 Str
25、ing password = *;/您的邮箱密码 Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore(pop3); store.connect(host, username, password); Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); Message message = folder.getM
26、essages(); System.out.println(Messagess length: + message.length); ReceiveMail pmm = null; for (int i = 0; i message.length; i+) pmm = new ReceiveMail(MimeMessage) messagei); System.out .println(Message + i + subject: + pmm.getSubject(); System.out.println(Message + i + sentdate: + pmm.getSentDate()
27、; System.out.println(Message + i + replysign: + pmm.getReplySign(); System.out.println(Message + i + hasRead: + pmm.isNew(); System.out.println(Message + i + containAttachment: + pmm.isContainAttach(Part) messagei); System.out.println(Message + i + form: + pmm.getFrom(); System.out.println(Message + i + to: + pmm.getMailAddress(to); System.out.println(Message + i + cc: + pmm.getMailAddress(cc); System.out.println(Message + i + bcc: + pmm.getMailAddress(bcc); pmm.setD
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1