活着的死人 发表于 2015-1-18 11:25:16

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里有这些工具吗?要简单多少?。

莫相离 发表于 2015-1-21 06:01:47

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

再现理想 发表于 2015-1-29 19:44:16

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

第二个灵魂 发表于 2015-2-5 15:17:08

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

精灵巫婆 发表于 2015-2-6 17:08:43

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

愤怒的大鸟 发表于 2015-2-6 18:54:31

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

金色的骷髅 发表于 2015-2-9 22:46:55

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

飘灵儿 发表于 2015-2-17 02:52:42

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

蒙在股里 发表于 2015-3-5 14:47:11

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

海妖 发表于 2015-3-8 10:04:28

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

冷月葬花魂 发表于 2015-3-9 12:17:29

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

只想知道 发表于 2015-3-13 11:36:47

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

老尸 发表于 2015-3-16 21:59:15

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

admin 发表于 2015-3-23 04:10:34

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页: [1]
查看完整版本: JAVA教程之JavaMail操纵的总结(3)