`
- 浏览:
75088 次
- 性别:
- 来自:
上海
-
-
import java.io.*;
- import java.text.*;
- import java.util.*;
- import javax.mail.*;
- import javax.mail.internet.*;
-
-
-
-
- public class ReciveOneMail {
-
private MimeMessage mimeMessage = null;
-
private String saveAttachPath = "";
-
private StringBuffer bodytext = new StringBuffer();
-
private String dateformat = "yy-MM-dd HH:mm";
-
-
public ReciveOneMail(MimeMessage mimeMessage) {
-
this.mimeMessage = mimeMessage;
-
}
-
-
public void setMimeMessage(MimeMessage mimeMessage) {
-
this.mimeMessage = mimeMessage;
-
}
-
-
-
-
-
public String getFrom() throws Exception {
-
InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();
-
String from = address[0].getAddress();
-
if (from == null)
-
from = "";
-
String personal = address[0].getPersonal();
-
if (personal == null)
-
personal = "";
-
String fromaddr = personal + "<" + from + ">";
-
return fromaddr;
-
}
-
-
-
-
-
public String getMailAddress(String type) throws Exception {
-
String mailaddr = "";
-
String addtype = type.toUpperCase();
-
InternetAddress[] address = null;
-
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 = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.BCC);
-
}
-
if (address != null) {
-
for (int i = 0; i < address.length; i++) {
-
String email = address[i].getAddress();
-
if (email == null)
-
email = "";
-
else {
-
email = MimeUtility.decodeText(email);
-
}
-
String personal = address[i].getPersonal();
-
if (personal == null)
-
personal = "";
-
else {
-
personal = MimeUtility.decodeText(personal);
-
}
-
String compositeto = personal + "<" + email + ">";
-
mailaddr += "," + compositeto;
-
}
-
mailaddr = mailaddr.substring(1);
-
}
-
} else {
-
throw new Exception("Error emailaddr type!");
-
}
-
return mailaddr;
-
}
-
-
-
-
-
public String getSubject() throws MessagingException {
-
String 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 SimpleDateFormat(dateformat);
-
return format.format(sentdate);
-
}
-
-
-
-
-
public String getBodyText() {
-
return bodytext.toString();
-
}
-
-
-
-
-
public void getMailContent(Part part) throws Exception {
-
String contenttype = part.getContentType();
-
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) {
-
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) 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;
-
}
-
-
-
-
-
public String getMessageId() throws MessagingException {
-
return mimeMessage.getMessageID();
-
}
-
-
-
-
-
public boolean isNew() throws MessagingException {
-
boolean isnew = false;
-
Flags flags = ((Message) mimeMessage).getFlags();
-
Flags.Flag[] flag = flags.getSystemFlags();
-
System.out.println("flags's length: " + flag.length);
-
for (int i = 0; i < flag.length; i++) {
-
if (flag[i] == Flags.Flag.SEEN) {
-
isnew = true;
-
System.out.println("seen Message.......");
-
break;
-
}
-
}
-
return isnew;
-
}
-
-
-
-
-
public boolean isContainAttach(Part part) throws Exception {
-
boolean attachflag = false;
-
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.ATTACHMENT)) || (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("name") != -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.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("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.decodeText(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 format) 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();
-
String 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("storefile's path: " + 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 ((c = bis.read()) != -1) {
-
bos.write(c);
-
bos.flush();
-
}
-
} catch (Exception exception) {
-
exception.printStackTrace();
-
throw new Exception("文件保存失败!");
-
} finally {
-
bos.close();
-
bis.close();
-
}
-
}
-
-
/**
-
* PraseMimeMessage类测试
-
*/
-
public static void main(String args[]) throws Exception {
-
Properties props = System.getProperties();
-
props.put("mail.smtp.host", "smtp.163.com");
-
props.put("mail.smtp.auth", "true");
-
Session session = Session.getDefaultInstance(props, null);
-
URLName urln = new URLName("pop3", "pop3.163.com", 110, null,
-
"xiangzhengyan", "pass");
-
Store store = session.getStore(urln);
-
store.connect();
-
Folder folder = store.getFolder("INBOX");
-
folder.open(Folder.READ_ONLY);
-
Message message[] = folder.getMessages();
-
System.out.println("Messages's length: " + message.length);
-
ReciveOneMail pmm = null;
-
for (int i = 0; i < message.length; i++) {
-
System.out.println("======================");
-
pmm = new ReciveOneMail((MimeMessage) message[i]);
-
System.out.println("Message " + i + " subject: " + pmm.getSubject());
-
System.out.println("Message " + i + " sentdate: "+ pmm.getSentDate());
-
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) message[i]));
-
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.setDateFormat("yy年MM月dd日 HH:mm");
-
System.out.println("Message " + i + " sentdate: "+ pmm.getSentDate());
-
System.out.println("Message " + i + " Message-ID: "+ pmm.getMessageId());
-
// 获得邮件内容===============
-
pmm.getMailContent((Part) message[i]);
-
System.out.println("Message " + i + " bodycontent: \r\n"
-
+ pmm.getBodyText());
-
pmm.setAttachPath("c:\\");
-
pmm.saveAttachMent((Part) message[i]);
-
}
-
}
-
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
JavaMail是一种广泛使用的Java库,用于处理电子邮件的发送和接收。在Java应用程序中实现邮件接收功能,JavaMail是必不可少的工具。本教程将详细介绍如何利用JavaMail API来接收邮件。 首先,我们需要理解JavaMail的...
以上就是关于"JAVA100例之实例48 使用JavaMail接收邮件"的主要内容,通过学习和实践这个实例,开发者将能够熟练地使用JavaMail API来实现邮件的接收功能,这对于构建自动化邮件系统或者处理邮件相关的业务需求非常有...
javamail接收邮件例子,我稍微改动了一下,有些错误和异常抛出了
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一套API,使得开发者能够方便地处理SMTP、POP3和IMAP等邮件协议。在给定的标题和描述中,我们讨论的是如何使用JavaMail API来接收邮件...
很好的邮件处理代码,1.5版本,作为build path放在eclipse里面,就可以用啦! oracle官方推的,很好!jdk1.6版本以上用起来很方便。
JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 IMAP。 在本文中,我们将讨论如何使用 JavaMail 库来代发邮件...
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
JavaMail 是一个强大的 Java 库,它允许开发者在应用程序中实现电子邮件的发送和接收功能。这个库支持多种邮件协议,如 SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和 IMAP(因特网消息访问协议)用于...
它支持多种协议,包括POP3、IMAP和SMTP,这些协议分别用于接收、检索和发送邮件。在使用JavaMail时,了解如何进行加密和非加密通信对于确保数据安全至关重要。 1. **POP3(Post Office Protocol version 3)**: -...
JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。它支持多种协议,如POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol),这两种协议常用于从邮件服务器...
2. **邮件协议**:Javamail支持多种邮件协议,如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol)用于接收邮件。在实现邮件...
通过JavaMail API,开发者可以方便地与SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)服务器交互,实现邮件的创建、发送、接收和管理等功能。 二、邮件收发原理 邮件收发系统的核心在于...
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了与 SMTP、POP3 和 IMAP 协议交互的接口,是开发基于 Java 的电子邮件应用的基础。回执邮件是邮件服务中的一项功能,它允许发件人在发送邮件...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中发送和接收电子邮件。它提供了丰富的API,使得开发者可以方便地处理SMTP、POP3和IMAP等邮件协议。在JavaMail中,我们可以实现各种复杂的邮件功能,如添加附件...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中实现电子邮件的发送和接收。它支持多种邮件协议,如SMTP(简单邮件传输协议)用于发送邮件,IMAP(因特网消息访问协议)和POP3(邮局协议)用于接收邮件。在...
JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送与接收。在本文中,我们将深入探讨如何使用 JavaMail 收取邮件,包括了解 POP3 和 IMAP 协议以及如何通过 JavaMail API 实现邮件的接收。 ...