|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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[i].getFrom()[0]).getPersonal();
Stringout_from_address=((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println("From:"+out_from_person+"");
System.out.println("Address:"+out_from_address+"");
Stringout_subject=message[i].getSubject();
System.out.println("Subject:"+out_subject+"");
//以下代码用来猎取邮件的主体信息
PartmessagePart=message[i];
Objectout_content=messagePart.getContent();
if(out_contentinstanceofMultipart)
{
messagePart=((Multipart)out_content).getBodyPart(0);
System.out.println("[MultipartMessage]");
}
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[i].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[chunk];
InputStreaminstream=part.getInputStream();
instream.read(buffer,0,chunk);
myFileoutputstream.write(buffer,0,chunk);
instream.close();
myFileoutputstream.close();
}
}
System.out.println("------------------------------------------------------------");
message[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();//封闭
}
catch(Exceptionej2)
{
System.out.println(ej2);
}
}
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。 |
|