|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在整理网友的文章的时候,发现一个javamail的总结,特此谢谢the_east_key,并且宣布给大家,希望对大家有做帮助,全文如下: 本文章对: 发送普通邮件,接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 [b[发送带有图片的邮件[/b]等做了一个总结。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import javax.mail.*; import java.util.*; import javax.mail.internet.*; import java.io.*; import javax.activation.*; public String host="smtp.163.com"; public String username="abcdefg"; public String password="abcdefg"; public String mail_head_name="this is head of this mail"; public String mail_head_value="this is head of this mail"; public String mail_to="xyz@163.com"; public String mail_from="abcdefg@163.com"; public String mail_subject="this is the subject of this test mail"; public String mail_body="this is the mail_body of this test mail"; //此段代码用来发送普通电子邮件 void jButton1_actionPerformed(ActionEvent e) { try { Properties props = new Properties();//获取系统环境 Authenticator auth = new Email_Autherticator();//进行邮件服务器用户认证 props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); //设置session,和邮件服务器进行通讯。 MimeMessage message = new MimeMessage(session); message.setContent("Hello","text/plain");//设置邮件格式 message.setSubject(mail_subject);//设置邮件主题 message.setText(mail_body);//设置邮件正文 message.setHeader(mail_head_name,mail_head_value);//设置邮件标题 message.setSentDate(new Date());//设置邮件发送日期 Address address = new InternetAddress(mail_from,"sunxiaoming"); message.setFrom(address); //设置邮件发送者的地址 //假如要对邮件发送者进行多个参数的设置,可以用以下语句 // Address address[] = {new InternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")}; // message.addFrom(address); Address toAddress = new InternetAddress(mail_to);//设置邮件接收方的地址 message.addRecipient(Message.RecipientType.TO,toAddress); // Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//设置邮件抄送者的地址 // message.addRecipient(Message.RecipientType.CC,ccAddress); Transport.send(message);//发送邮件 /* // to get a specific instance from the session for your protocol.pass along the username and password // (blank if unnecessary).send the message,and close the connection; message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host,username,password); transport.sendMessage(message,message.getAllRecipients()); transport.close(); */ System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } } //此段代码用来进行服务器对用户的认证 public class Email_Autherticator extends Authenticator { public Email_Autherticator() { super(); } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username,password); } } //该程序为接收邮件 void jButton2_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");//连接到Store后,取得一个文件夹,一般默认的是INDEX folder.open(Folder.READ_WRITE);//READ_ONLY为打开方法 Message message[] = folder.getMessages();//从文件夹获取邮件信息 //可以用两种方法去获得邮件信息,getContent()用来获得邮件的主体信息。而WriteTo()可以用来获得邮件的全部信息,包括头部信息 // System.out.println(((MimeMessage)message).getContent()); for (int i=0,n=message.length;i<n;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(); } } System.out.println("----------------------------------------"); message[i].setFlag(Flags.Flag.DELETED,true);//最后删除服务器端的邮件 } //DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER folder.close(true);//true的话,彻底删除已经标记为DELETE的邮件,假如为false的话,就不删除 store.close();//关闭 } catch(Exception ej2) { System.out.println(ej2); } } void jButton4_actionPerformed(ActionEvent e) { try {//该程序为回复邮件 Properties props = System.getProperties(); //获取系统变量 Authenticator auth = new Email_Autherticator(); //取得?uFFFD衿魅现? 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); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); Message message[] = folder.getMessages(); for (int i=0,n=message.length;i<n;i++) { // String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();//获取邮件发信人的署名 String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress(); System.out.println(out_from_address); Message forward = new MimeMessage(session); forward.setSubject("Fwd:"+message[i].getSubject()); forward.setFrom(new InternetAddress(mail_to)); forward.addRecipient(Message.RecipientType.TO,new InternetAddress(out_from_address)); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Here you go with the original message: "); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(message[i].getDataHandler()); multipart.addBodyPart(messageBodyPart); forward.setContent(multipart); Transport.send(forward); message[i].setFlag(Flags.Flag.DELETED,true);//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER } folder.close(true); store.close();//关闭 } catch(Exception ej2) { System.out.println(ej2); } } void jButton5_actionPerformed(ActionEvent e) { try { Properties props = new Properties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); MimeMessage message = new MimeMessage(session); message.setContent("Hello","text/plain"); message.setSubject(mail_subject); message.setText(mail_body); message.setHeader(mail_head_name,mail_head_value); message.setSentDate(new Date()); message.setFrom(new InternetAddress(mail_from,"sunxiaoming")); //to signal man //原理:可以将邮件看成有多个部分组成的,如正文是一个部分,附件也是一个部分,所以用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<n;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<m;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); } } //此段代码用来发送带有html信息的邮件 void jButton8_actionPerformed(ActionEvent e) { try { Properties props = new Properties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); MimeMessage message = new MimeMessage(session); //设置邮件正文 String htmltext="<h1>hello</h1>"+"<a href="http://www.sina.com.cn" target="_blank">click me please!</a>"; message.setContent(htmltext,"text/html");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式 message.setSubject(mail_subject); // message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText() message.setHeader(mail_head_name,mail_head_value); message.setSentDate(new Date()); Address address = new InternetAddress(mail_from,"sunxiaoming"); message.setFrom(address); Address toAddress = new InternetAddress(mail_to); message.addRecipient(Message.RecipientType.TO,toAddress); Transport.send(message); System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } } //此段代码用来发送带有图片的邮件 void jButton9_actionPerformed(ActionEvent e) { try { String file = "./20020423/test.gif"; Properties props = new Properties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); MimeMessage message = new MimeMessage(session); message.setSubject("Embedded Image"); Address address = new InternetAddress(mail_from,"sunxiaoming"); message.setFrom(address); Address toAddress = new InternetAddress(mail_to); message.addRecipient(Message.RecipientType.TO,toAddress); message.setHeader(mail_head_name,mail_head_value); message.setSentDate(new Date()); BodyPart messageBodyPart = new MimeBodyPart(); String htmlText = "<h1><hello></h1>"+"<img src="cid:memememe">";//加入图片 messageBodyPart.setContent(htmlText,"text/html"); //原理同发送附件相同,将邮件看成有多个部分组成的,先设置每一个部分,然后再全部将它们合起来即可。 //Create a related multi-part to combine the parts MimeMultipart multipart = new MimeMultipart("related"); multipart.addBodyPart(messageBodyPart); //Create part for the image messageBodyPart = new MimeBodyPart(); //Fetch the image and associate to part DataSource fds = new FileDataSource(file); messageBodyPart.setDataHandler(new DataHandler(fds)); messageBodyPart.setHeader("Content-ID","memememe"); //Add part to multi-part multipart.addBodyPart(messageBodyPart); //Associate multi-part with message message.setContent(multipart); Transport.send(message); System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } } //该程序用来接受带有html信息的邮件 void jButton7_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); 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<n;i++) // for (int i=0,n=1;i<n;i++)//only one letter received from inbox //for debug { 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); jEditorPane1.setText("");//将其显示在jEditorPanel上 jEditorPane1.setContentType("text/html"); jEditorPane1.setText((String)out_content); jEditorPane1.setEditable(false); /* 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(); } } */ System.out.println("------------------------------------"); message[i].setFlag(Flags.Flag.DELETED,true); } folder.close(true); store.close(); } catch(Exception ej2) { System.out.println(ej2); } } 返回类别: 教程 上一教程: STRUTS下JSP页面传递复选框值技巧 下一教程: 编程修养 您可以阅读与"JAVAMAIL操作的总结"相关的教程: · JAVAMAIL操作的总结(3) · JAVAMAIL操作的总结(2) · JAVAMAIL操作的总结(1) · JAVAMAIL操作的总结(4) · java内部类的总结 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |