- 浏览: 241365 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
satanrad:
非常感谢分享,我也碰见一样的问题。还以为机器上的JDK版本过高 ...
Nexus 启动报错(win7 32位 jdk1.6) -
FX夜归人:
FX夜归人 写道能不能解释下 0.50000000001?3Q ...
js格式化金额 -
FX夜归人:
能不能解释下 0.50000000001?3Q
js格式化金额 -
wzmmao:
您好,在问答频道看到您说到DHTMLX,我也是刚接触这个,不知 ...
EXTJS4.0 用法笔记~~ 3种和后台交互数据的方法
jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html
package store;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
public class ReceivedEmail {
private MimeMessage msg = null;
private String saveAttchPath = "";
private StringBuffer bodytext = new StringBuffer();
private String dateformate = "yy-MM-dd HH:mm";
public ReceivedEmail(MimeMessage msg){
this.msg = msg;
}
public void setMsg(MimeMessage msg) {
this.msg = msg;
}
/**
* 获取发送邮件者信息
* @return
* @throws MessagingException
*/
public String getFrom() throws MessagingException{
InternetAddress[] address = (InternetAddress[]) msg.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;
}
/**
* 获取邮件收件人,抄送,密送的地址和信息。根据所传递的参数不同 "to"-->收件人,"cc"-->抄送人地址,"bcc"-->密送地址
* @param type
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public String getMailAddress(String type) throws MessagingException, UnsupportedEncodingException{
String mailaddr = "";
String addrType = type.toUpperCase();
InternetAddress[] address = null;
if(addrType.equals("TO")||addrType.equals("CC")||addrType.equals("BCC")){
if(addrType.equals("TO")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.TO);
}
if(addrType.equals("CC")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.CC);
}
if(addrType.equals("BCC")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.BCC);
}
if(address != null){
for(int i=0;i<address.length;i++){
String mail = address[i].getAddress();
if(mail == null){
mail = "";
}else{
mail = MimeUtility.decodeText(mail);
}
String personal = address[i].getPersonal();
if(personal == null){
personal = "";
}else{
personal = MimeUtility.decodeText(personal);
}
String compositeto = personal +"<"+mail+">";
mailaddr += ","+compositeto;
}
mailaddr = mailaddr.substring(1);
}
}else{
throw new RuntimeException("Error email Type!");
}
return mailaddr;
}
/**
* 获取邮件主题
* @return
* @throws UnsupportedEncodingException
* @throws MessagingException
*/
public String getSubject() throws UnsupportedEncodingException, MessagingException{
String subject = "";
subject = MimeUtility.decodeText(msg.getSubject());
if(subject == null){
subject = "";
}
return subject;
}
/**
* 获取邮件发送日期
* @return
* @throws MessagingException
*/
public String getSendDate() throws MessagingException{
Date sendDate = msg.getSentDate();
SimpleDateFormat smd = new SimpleDateFormat(dateformate);
return smd.format(sendDate);
}
/**
* 获取邮件正文内容
* @return
*/
public String getBodyText(){
return bodytext.toString();
}
/**
* 解析邮件,将得到的邮件内容保存到一个stringBuffer对象中,解析邮件 主要根据MimeType的不同执行不同的操作,一步一步的解析
* @param part
* @throws MessagingException
* @throws IOException
*/
public void getMailContent(Part part) throws MessagingException, IOException{
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 count = multipart.getCount();
for(int i=0;i<count;i++){
getMailContent(multipart.getBodyPart(i));
}
}else if(part.isMimeType("message/rfc822")){
getMailContent((Part) part.getContent());
}
}
/**
* 判断邮件是否需要回执,如需回执返回true,否则返回false
* @return
* @throws MessagingException
*/
public boolean getReplySign() throws MessagingException{
boolean replySign = false;
String needreply[] = msg.getHeader("Disposition-Notification-TO");
if(needreply != null){
replySign = true;
}
return replySign;
}
/**
* 获取此邮件的message-id
* @return
* @throws MessagingException
*/
public String getMessageId() throws MessagingException{
return msg.getMessageID();
}
/**
* 判断此邮件是否已读,如果未读则返回false,已读返回true
* @return
* @throws MessagingException
*/
public boolean isNew() throws MessagingException{
boolean isnew = false;
Flags flags = ((Message)msg).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;
}
/**
* 判断是是否包含附件
* @param part
* @return
* @throws MessagingException
* @throws IOException
*/
public boolean isContainAttch(Part part) throws MessagingException, IOException{
boolean flag = false;
String contentType = part.getContentType();
if(part.isMimeType("multipart/*")){
Multipart multipart = (Multipart) part.getContent();
int count = multipart.getCount();
for(int i=0;i<count;i++){
BodyPart bodypart = multipart.getBodyPart(i);
String dispostion = bodypart.getDisposition();
if((dispostion != null)&&(dispostion.equals(Part.ATTACHMENT)||dispostion.equals(Part.INLINE))){
flag = true;
}else if(bodypart.isMimeType("multipart/*")){
flag = isContainAttch(bodypart);
}else{
String conType = bodypart.getContentType();
if(conType.toLowerCase().indexOf("appliaction")!=-1){
flag = true;
}
if(conType.toLowerCase().indexOf("name")!=-1){
flag = true;
}
}
}
}else if(part.isMimeType("message/rfc822")){
flag = isContainAttch((Part) part.getContent());
}
return flag;
}
/**
* 保存附件
* @param part
* @throws MessagingException
* @throws IOException
*/
public void saveAttchMent(Part part) throws MessagingException, IOException{
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 dispostion = mpart.getDisposition();
if((dispostion != null)&&(dispostion.equals(Part.ATTACHMENT)||dispostion.equals(Part.INLINE))){
filename = mpart.getFileName();
if(filename.toLowerCase().indexOf("gb18030")!=-1){
filename = MimeUtility.decodeText(filename);
}
saveFile(filename,mpart.getInputStream());
}else if(mpart.isMimeType("multipart/*")){
saveAttchMent(mpart);
}else{
filename = mpart.getFileName();
if(filename != null&&(filename.toLowerCase().indexOf("gbk")!=-1)){
filename = MimeUtility.decodeText(filename);
}
saveFile(filename,mpart.getInputStream());
}
}
}else if(part.isMimeType("message/rfc822")){
saveAttchMent((Part) part.getContent());
}
}
/**
* 获得保存附件的地址
* @return
*/
public String getSaveAttchPath() {
return saveAttchPath;
}
/**
* 设置保存附件地址
* @param saveAttchPath
*/
public void setSaveAttchPath(String saveAttchPath) {
this.saveAttchPath = saveAttchPath;
}
/**
* 设置日期格式
* @param dateformate
*/
public void setDateformate(String dateformate) {
this.dateformate = dateformate;
}
/**
* 保存文件内容
* @param filename
* @param inputStream
* @throws IOException
*/
private void saveFile(String filename, InputStream inputStream) throws IOException {
String osname = System.getProperty("os.name");
String storedir = getSaveAttchPath();
String sepatror = "";
if(osname == null){
osname = "";
}
if(osname.toLowerCase().indexOf("win")!=-1){
sepatror = "//";
if(storedir==null||"".equals(storedir)){
storedir = "d://temp";
}
}else{
sepatror = "/";
storedir = "/temp";
}
File storefile = new File(storedir+sepatror+filename);
System.out.println("storefile's path:"+storefile.toString());
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(storefile));
bis = new BufferedInputStream(inputStream);
int c;
while((c= bis.read())!=-1){
bos.write(c);
bos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
bos.close();
bis.close();
}
}
public void recive(Part part,int i) throws MessagingException, IOException{
System.out.println("------------------START-----------------------");
System.out.println("Message"+i+" subject:" + getSubject());
System.out.println("Message"+i+" from:" + getFrom());
System.out.println("Message"+i+" isNew:" + isNew());
boolean flag = isContainAttch(part);
System.out.println("Message"+i+" isContainAttch:" +flag);
System.out.println("Message"+i+" replySign:" + getReplySign());
getMailContent(part);
System.out.println("Message"+i+" content:" + getBodyText());
setSaveAttchPath("c://temp//"+i);
if(flag){
saveAttchMent(part);
}
System.out.println("------------------END-----------------------");
}
public static void main(String[] args) throws MessagingException, IOException {
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.sina.com");
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,null);
//这里使用的是sina的邮件服务器,输入邮箱用户名和密码直接运行就可以收邮件
URLName urlname = new URLName("pop3","pop.sina.com",110,null,"zzjicdi@sina.com","123456");
Store store = session.getStore(urlname);
store.connect();
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message msgs[] = folder.getMessages();
int count = msgs.length;
System.out.println("Message Count:"+count);
ReceivedEmail rm = null;
for(int i=0;i<count;i++){
rm = new ReceivedEmail((MimeMessage) msgs[i]);
rm.recive(msgs[i],i);
}
}
}
发表评论
-
webservice之wsdl生成客户端代码
2019-03-01 09:47 1864webservice生成客户端代码有两种方法: 1.根据wsd ... -
针对天下这种编码的中文转换
2014-05-15 17:19 0先调用replaceEntityChar()方法 将尖括 ... -
c3p0详细配置
2014-04-25 11:42 1034<c3p0-config>< default ... -
javaMail实现收发邮件2(完善版,此版本已投入客户使用)
2013-09-04 15:13 1118package com.skysz.app.km.audit ... -
java ftp上传删除文件
2013-08-13 13:01 902public void deleteFtpFiles(FT ... -
遍历文件夹的两种方式
2013-07-31 09:40 0A.不使用递归: import java.io.F ... -
java判断两个文件夹是否存在相同的文件
2013-07-31 09:39 2786public static void main(String ... -
set 服务器虚拟内存
2013-07-23 15:56 896使用Java程序从数据库中查询大量的数据时出现异常:java. ... -
加密读文件
2013-04-17 13:02 1036package com.skysz.framework.u ... -
Xpath解析xml
2013-03-10 09:07 1013xml文件: <datas> <d ... -
java格式化金额/格式化科学计数法金额显示double
2013-03-04 13:34 1542DecimalFormat df = new Decima ... -
java 字符与ASC码互转
2013-02-22 09:16 1590/** * 字符转ASC * @param st ... -
java 将字符窜转换成类似7A%68%75%7A%
2012-12-25 16:19 1055public static void aa(Str ... -
java深度克隆
2012-12-19 10:08 1110利用序列化实现深度克隆 把对象写到流里的过程是序列化(Se ... -
java浅度克隆
2012-12-18 18:43 895对象实现implements Cloneable接口 然 ... -
Java遍历properties文件
2012-11-12 10:33 1967//1. new java.utils.properties ... -
InputStreamReader 和FileReader的区别
2012-08-07 09:52 2405InputStreamReader 和 BufferedRea ... -
Java 实现 FTP上传下载(二)
2012-07-12 13:56 1207/** * 登录FTP * * @param ftpU ... -
Java 实现 FTP上传下载(转)
2012-07-09 17:50 1268Servlet类: package org.se ...
相关推荐
在提供的压缩包文件“james+javaMail收发邮件”中,可能包含了示例代码和配置文件,供开发者参考和学习如何在实际项目中实现邮件收发功能,特别是处理中文内容和附件。通过理解和实践这些示例,开发者可以更好地掌握...
在这个主题中,我们将深入探讨如何使用 JavaMail 实现邮件的加密和解密,以及如何进行邮件的签名,确保通信的安全性。 1. **JavaMail 基础** 在 JavaMail 中,`javax.mail` 和 `javax.mail.internet` 包提供了主要...
1. **网络编程**:理解和应用TCP/IP协议是实现邮件收发的基础,包括HTTP、SMTP和IMAP等协议。 2. **多线程**:如果需要同时处理多个邮件操作,如并发发送邮件或接收新邮件,多线程编程是必要的。 3. **安全性**:...
《基于Javamail的邮件收发系统》项目是一份全面的资料集合,包含了系统实现、相关文档、开题报告、任务书、外文翻译、文献综述以及答辩PPT等重要组成部分,旨在帮助读者深入理解和掌握使用JavaMail进行邮件收发的...
这个项目主要探讨了如何使用JavaMail API来实现一个高效、稳定的邮件收发系统。下面将详细解析其中涉及的关键知识点。 一、JavaMail API JavaMail API是Java平台上用于处理电子邮件的一组接口和类。它提供了一种...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
这个压缩包文件包含了基于JavaMail实现邮件收发系统的完整资源,包括系统代码、学术论文、开题报告、任务书、外文翻译、文献综述以及答辩PPT,是学习和实践JavaMail API的一个宝贵资料集。 首先,我们要理解...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
JavaMail是一个开源API,用于处理SMTP、IMAP和POP3等邮件协议,使得开发者能够方便地在Java应用程序中实现邮件收发功能。 2.2 Swing和Eclipse Swing是Java的GUI库,用于构建用户界面,而Eclipse是一款广泛使用的...
基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
这个基于 Javamail 的邮件收发系统是利用 JavaMail 提供的接口和类来构建的一个完整的邮件处理系统。该系统可能包含了多个组件,如用户界面、服务器端处理逻辑以及与 SMTP 和 POP3/IMAP 协议的交互。 首先,让我们...
基于JavaMail的邮件收发系统是一种用于发送和接收电子邮件的应用程序,它基于JavaMail API来实现与邮件服务器的通信,并提供用户界面来进行邮件的管理和操作。以下是对该系统实现的描述: 用户界面: 系统提供了...
java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP...
基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:...