javamail实现大全.docx
- 文档编号:7902239
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:33
- 大小:24.01KB
javamail实现大全.docx
《javamail实现大全.docx》由会员分享,可在线阅读,更多相关《javamail实现大全.docx(33页珍藏版)》请在冰豆网上搜索。
javamail实现大全
javamail实现大全
packageorg.mail.core;
importjava.io.*;
importjava.text.*;
importjava.util.*;
importjavax.mail.*;
importjavax.mail.internet.*;
publicclassReceiveMail{
privateMimeMessagemimeMessage=null;
privateStringsaveAttachPath="";//附件下载后的存放目录
privateStringBufferbodytext=newStringBuffer();
//存放邮件内容的StringBuffer对象
privateStringdateformat="yy-MM-ddHH:
mm";//默认的日前显示格式
/**
*构造函数,初始化一个MimeMessage对象
*/
publicReceiveMail(){
}
publicReceiveMail(MimeMessagemimeMessage){
this.mimeMessage=mimeMessage;
System.out.println("createaReceiveMailobject........");
}
publicvoidsetMimeMessage(MimeMessagemimeMessage){
this.mimeMessage=mimeMessage;
}
/**
**获得发件人的地址和姓名
*/
publicStringgetFrom()throwsException{
InternetAddressaddress[]=(InternetAddress[])mimeMessage.getFrom();
Stringfrom=address[0].getAddress();
if(from==null)
from="";
Stringpersonal=address[0].getPersonal();
if(personal==null)
personal="";
Stringfromaddr=personal+"<"+from+">";
returnfromaddr;
}
/**
**获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同*"to"----收件人"cc"---抄送人地址
*"bcc"---密送人地址
*/
publicStringgetMailAddress(Stringtype)throwsException{
Stringmailaddr="";
Stringaddtype=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);
}elseif(addtype.equals("CC")){
address=(InternetAddress[])mimeMessage
.getRecipients(Message.RecipientType.CC);
}else{
address=(InternetAddress[])mimeMessage
.getRecipients(Message.RecipientType.BCC);
}
if(address!
=null){
for(inti=0;i
Stringemail=address[i].getAddress();
if(email==null)
email="";
else{
email=MimeUtility.decodeText(email);
}
Stringpersonal=address[i].getPersonal();
if(personal==null)
personal="";
else{
personal=MimeUtility.decodeText(personal);
}
Stringcompositeto=personal+"<"+email+">";
mailaddr+=","+compositeto;
}
mailaddr=mailaddr.substring
(1);
}
}else{
thrownewException("Erroremailaddrtype!
");
}
returnmailaddr;
}
/**
**获得邮件主题
*/
publicStringgetSubject()throwsMessagingException{
Stringsubject="";
try{
subject=MimeUtility.decodeText(mimeMessage.getSubject());
if(subject==null)
subject="";
}catch(Exceptionexce){
}
returnsubject;
}
/**
**获得邮件发送日期
*/
publicStringgetSentDate()throwsException{
Datesentdate=mimeMessage.getSentDate();
SimpleDateFormatformat=newSimpleDateFormat(dateformat);
returnformat.format(sentdate);
}
/**
**获得邮件正文内容
*/
publicStringgetBodyText(){
returnbodytext.toString();
}
/**
**解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件*
*主要是根据MimeType类型的不同执行不同的操作,一步一步的解析
*/
publicvoidgetMailContent(Partpart)throwsException{
Stringcontenttype=part.getContentType();
intnameindex=contenttype.indexOf("name");
booleanconname=false;
if(nameindex!
=-1)
conname=true;
System.out.println("CONTENTTYPE:
"+contenttype);
if(part.isMimeType("text/plain")&&!
conname){
bodytext.append((String)part.getContent());
}elseif(part.isMimeType("text/html")&&!
conname){
bodytext.append((String)part.getContent());
}elseif(part.isMimeType("multipart/*")){
Multipartmultipart=(Multipart)part.getContent();
intcounts=multipart.getCount();
for(inti=0;i getMailContent(multipart.getBodyPart(i)); } }elseif(part.isMimeType("message/rfc822")){ getMailContent((Part)part.getContent()); }else{ } } /** **判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" */ publicbooleangetReplySign()throwsMessagingException{ booleanreplysign=false; Stringneedreply[]=mimeMessage .getHeader("Disposition-Notification-To"); if(needreply! =null){ replysign=true; } returnreplysign; } /** **获得此邮件的Message-ID */ publicStringgetMessageId()throwsMessagingException{ returnmimeMessage.getMessageID(); } /** **【判断此邮件是否已读,如果未读返回返回false,反之返回true】 */ publicbooleanisNew()throwsMessagingException{ booleanisnew=false; Flagsflags=((Message)mimeMessage).getFlags(); Flags.Flag[]flag=flags.getSystemFlags(); System.out.println("flags'slength: "+flag.length); for(inti=0;i if(flag[i]==Flags.Flag.SEEN){ isnew=true; System.out.println("seenMessage......."); break; } } returnisnew; } /** **判断此邮件是否包含附件 */ publicbooleanisContainAttach(Partpart)throwsException{ booleanattachflag=false; StringcontentType=part.getContentType(); if(part.isMimeType("multipart/*")){ Multipartmp=(Multipart)part.getContent(); for(inti=0;i BodyPartmpart=mp.getBodyPart(i); Stringdisposition=mpart.getDisposition(); if((disposition! =null) &&((disposition.equals(Part.ATTACHMENT))||(disposition .equals(Part.INLINE)))) attachflag=true; elseif(mpart.isMimeType("multipart/*")){ attachflag=isContainAttach((Part)mpart); }else{ Stringcontype=mpart.getContentType(); if(contype.toLowerCase().indexOf("application")! =-1) attachflag=true; if(contype.toLowerCase().indexOf("name")! =-1) attachflag=true; } } }elseif(part.isMimeType("message/rfc822")){ attachflag=isContainAttach((Part)part.getContent()); } returnattachflag; } /** **【保存附件】 */ publicvoidsaveAttachMent(Partpart)throwsException{ StringfileName=""; if(part.isMimeType("multipart/*")){ Multipartmp=(Multipart)part.getContent(); for(inti=0;i BodyPartmpart=mp.getBodyPart(i); Stringdisposition=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()); }elseif(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()); } } } }elseif(part.isMimeType("message/rfc822")){ saveAttachMent((Part)part.getContent()); } } /** **【设置附件存放路径】 */ publicvoidsetAttachPath(Stringattachpath){ this.saveAttachPath=attachpath; } /** **【设置日期显示格式】 */ publicvoidsetDateFormat(Stringformat)throwsException{ this.dateformat=format; } /** **【获得附件存放路径】 */ publicStringgetAttachPath(){ returnsaveAttachPath; } /** **【真正的保存附件到指定目录里】 */ privatevoidsaveFile(StringfileName,InputStreamin)throwsException{ StringosName=System.getProperty("os.name"); Stringstoredir=getAttachPath(); Stringseparator=""; if(osName==null) osName=""; if(osName.toLowerCase().indexOf("win")! =-1){ separator="\\"; if(storedir==null||storedir.equals("")) storedir="c: \\tmp"; }else{ separator="/"; storedir="/tmp"; } Filestorefile=newFile(storedir+separator+fileName); System.out.println("storefile'spath: "+storefile.toString()); //for(inti=0;storefile.exists();i++){ //storefile=newFile(storedir+separator+fileName+i); //} BufferedOutputStreambos=null; BufferedInputStreambis=null; try{ bos=newBufferedOutputStream(newFileOutputStream(storefile)); bis=newBufferedInputStream(in); intc; while((c=bis.read())! =-1){ bos.write(c); bos.flush(); } }catch(Exceptionexception){ exception.printStackTrace(); thrownewException("文件保存失败! "); }finally{ bos.close(); bis.close(); } } /** **ReceiveMail类测试 */ publicstaticvoidmain(Stringargs[])throwsException{ Stringhost=""; Stringusername="demo";//您的邮箱用户名 Stringpassword="******";//您的邮箱密码 Propertiesprops=newProperties(); Sessionsession=Session.getDefaultInstance(props,null); Storestore=session.getStore("pop3"); store.connect(host,username,password); Folderfolder=store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Messagemessage[]=folder.getMessages(); System.out.println("Messages'slength: "+message.length); ReceiveMailpmm=null; for(inti=0;i pmm=newReceiveMail((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.setD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javamail 实现 大全
![提示](https://static.bdocx.com/images/bang_tan.gif)