繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> Java与XML >> JavaMail操作的总结(3)

JavaMail操作的总结(3)

2004-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:  //原理:可以将邮件看成有多个部分组成的,如正文是一个部分,附件也是一个部分,所以用BodyPart来设置邮件的格式 message.addRecipient(Message.RecipientType.TO,new InternetAddress(mail_to)); BodyPart...
关键字:JavaMail

  //原理:可以将邮件看成有多个部分组成的,如正文是一个部分,附件也是一个部分,所以用BodyPart来设置邮件的格式

message.addRecipient(Message.RecipientType.TO,new InternetAddress(mail_to));

BodyPart messageBodyPart = new MimeBodyPart();

messageBodyPart.setText("Pardon Ideas");

Multipart multipart = new MimeMultipart();

multipart.addBodyPart(messageBodyPart);

messageBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource("./20020423/test.zip");//此处设置邮件的附件

messageBodyPart.setDataHandler(new DataHandler(source));

messageBodyPart.setFileName("test.zip");

multipart.addBodyPart(messageBodyPart);

message.setContent(multipart);

Transport.send(message);

System.out.println("send ok!");

}

catch(Exception ex)

{

System.out.println("faild"+ex);

}

}

//此段代码用来发送带有附件的邮件

void jButton6_actionPerformed(ActionEvent e) {

try

{

Properties props = System.getProperties();

Authenticator auth = new Email_Autherticator();

props.put("mail.smtp.host",host);

props.put("mail.smtp.auth","true");

Session session = Session.getDefaultInstance(props,auth); //建立session

Store store = session.getStore("pop3");

store.connect(host,username,password);

//After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:

Folder folder = store.getFolder("INBOX");

folder.open(Folder.READ_WRITE);

Message message[] = folder.getMessages();

for (int i=0,n=message.length;i {

//获得邮件的部分信息,如头部信息,送信人的署名,送信人的邮件地址

String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();

String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();

System.out.println("From:"+out_from_person+" ");

System.out.println("Address:"+out_from_address+" ");

String out_subject = message[i].getSubject();

System.out.println("Subject:"+out_subject+" ");

//以下代码用来获取邮件的主体信息

Part messagePart = message[i];

Object out_content = messagePart.getContent();

if (out_content instanceof Multipart)

{

messagePart = ((Multipart)out_content).getBodyPart(0);

System.out.println("[ Multipart Message ]");

}

String out_content_type = messagePart.getContentType();

System.out.println("CONTENT:"+out_content_type);

if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))

{

InputStream ipstm = messagePart.getInputStream();

BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));

String thisLine = bufreader.readLine();

while (thisLine != null)

{

System.out.println("thisLine: "+thisLine);

thisLine = bufreader.readLine();

}

}

//获取附件

Multipart mp = (Multipart)message[i].getContent();

for (int j=0,m=mp.getCount();j {

System.out.println("***"+m+"***");

Part part = mp.getBodyPart(j);

String disposition = part.getDisposition();

if ((disposition != null) && ((disposition.equals(part.ATTACHMENT)) | | (disposition.equals(part.INLINE))))

{

//以下代码将获得的附件保存到当前目录下,以part.getFileName()为文件名,也既是附件的名称。

File filename = new File(part.getFileName());

for (int k=0;filename.exists();k++)

{

filename = new File(part.getFileName()+k);

}

FileOutputStream myFileoutputstream = new FileOutputStream(filename);

int chunk = part.getSize();//获得附件的大小,不一定很准确。

byte [] buffer = new byte[chunk];

InputStream instream = 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(Exception ej2)

{

System.out.println(ej2);

}

}

责任编辑:admin
相关文章