JAVA教程之JavaMail操纵的总结(3)
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)//道理:能够将邮件当作有多个部分构成的,如注释是一个部分,附件也是一个部分,以是用BodyPart来设置邮件的格局message.addRecipient(Message.RecipientType.TO,newInternetAddress(mail_to));
BodyPartmessageBodyPart=newMimeBodyPart();
messageBodyPart.setText("PardonIdeas");
Multipartmultipart=newMimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart=newMimeBodyPart();
DataSourcesource=newFileDataSource("./20020423/test.zip");//此处设置邮件的附件
messageBodyPart.setDataHandler(newDataHandler(source));
messageBodyPart.setFileName("test.zip");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("sendok!");
}
catch(Exceptionex)
{
System.out.println("faild"+ex);
}
}
//此段代码用来发送带有附件的邮件
voidjButton6_actionPerformed(ActionEvente){
try
{
Propertiesprops=System.getProperties();
Authenticatorauth=newEmail_Autherticator();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Sessionsession=Session.getDefaultInstance(props,auth);//创建session
Storestore=session.getStore("pop3");
store.connect(host,username,password);
//AfterconnectingtotheStore,youcangetaFolder,whichmustbeopenedbeforeyoucanreadmessagesfromit:
Folderfolder=store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Messagemessage[]=folder.getMessages();
for(inti=0,n=message.length;i{
//取得邮件的部分信息,如头部信息,送信人的签名,送信人的邮件地点
Stringout_from_person=((InternetAddress)message.getFrom()).getPersonal();
Stringout_from_address=((InternetAddress)message.getFrom()).getAddress();
System.out.println("From:"+out_from_person+"");
System.out.println("Address:"+out_from_address+"");
Stringout_subject=message.getSubject();
System.out.println("Subject:"+out_subject+"");
//以下代码用来猎取邮件的主体信息
PartmessagePart=message;
Objectout_content=messagePart.getContent();
if(out_contentinstanceofMultipart)
{
messagePart=((Multipart)out_content).getBodyPart(0);
System.out.println("");
}
Stringout_content_type=messagePart.getContentType();
System.out.println("CONTENT:"+out_content_type);
if(out_content_type.startsWith("text/plain")||out_content_type.startsWith("text/html"))
{
InputStreamipstm=messagePart.getInputStream();
BufferedReaderbufreader=newBufferedReader(newInputStreamReader(ipstm));
StringthisLine=bufreader.readLine();
while(thisLine!=null)
{
System.out.println("thisLine:"+thisLine);
thisLine=bufreader.readLine();
}
}
//猎取附件
Multipartmp=(Multipart)message.getContent();
for(intj=0,m=mp.getCount();j{
System.out.println("***"+m+"***");
Partpart=mp.getBodyPart(j);
Stringdisposition=part.getDisposition();
if((disposition!=null)&&((disposition.equals(part.ATTACHMENT))||(disposition.equals(part.INLINE))))
{
//以下代码将取得的附件保留到以后目次下,以part.getFileName()为文件名,也既是附件的称号。
Filefilename=newFile(part.getFileName());
for(intk=0;filename.exists();k++)
{
filename=newFile(part.getFileName()+k);
}
FileOutputStreammyFileoutputstream=newFileOutputStream(filename);
intchunk=part.getSize();//取得附件的巨细,纷歧定很正确。
byte[]buffer=newbyte;
InputStreaminstream=part.getInputStream();
instream.read(buffer,0,chunk);
myFileoutputstream.write(buffer,0,chunk);
instream.close();
myFileoutputstream.close();
}
}
System.out.println("------------------------------------------------------------");
message.setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();//封闭
}
catch(Exceptionej2)
{
System.out.println(ej2);
}
}
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页:
[1]