`
lc52520
  • 浏览: 362060 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

javaMail【Z】

    博客分类:
  • java
阅读更多

commons-email-1.1.jar: 这是Apache组织下的一个项目,主要就是对java的邮件功能进行了封装,用起来更加方便,简单。 

接下来我们就说说这个jar包。 

首先肯定得下载commons-email-1.1.jar,并下载mail.jar和activation.jar(它们可以从sun的网站上下载,从下载的javamail和jaf中找到)。 

如果没有mail.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message 这样的错误提示。 

如果没有activation.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource 这样的错误提示。 

下面是一个简单的测试。 

Java代码  收藏代码
  1. Java代码  
  2. import  org.apache.commons.mail.EmailException;       
  3. import  org.apache.commons.mail.SimpleEmail;       
  4.       
  5. public   class  Send        
  6. {       
  7.     public  Send()       
  8.     {       
  9.                
  10.     }       
  11.            
  12.     public   static   void  main(String[] args)       
  13.     {       
  14.         send();       
  15.     }       
  16.            
  17.     public   static   void  send()       
  18.     {       
  19.         SimpleEmail email = new  SimpleEmail();          
  20.         email.setTLS(true );               
  21.         email.setHostName("smtp.gmail.com" );             
  22.         email.setAuthentication("***@gmail.com" "***" );    //用户名和密码        
  23.                
  24.         try         
  25.         {       
  26.             email.addTo("lifangxin2050@163.com" );  //接收方        
  27.             email.setFrom("lifangxin2050@gmail.com" );        //发送方          
  28.             email.setSubject("Java Mail Test" );          //标题           
  29.             email.setMsg("Just a simple send test ." );    //内容           
  30.             email.send();        
  31.                    
  32.         } catch  (EmailException e) {       
  33.             e.printStackTrace();       
  34.         }        
  35.     }       
  36. }     
  37.   
  38. import  org.apache.commons.mail.EmailException;    
  39. import  org.apache.commons.mail.SimpleEmail;    
  40.    
  41. public   class  Send     
  42. {    
  43.     public  Send()    
  44.     {    
  45.             
  46.     }    
  47.         
  48.     public   static   void  main(String[] args)    
  49.     {    
  50.         send();    
  51.     }    
  52.         
  53.     public   static   void  send()    
  54.     {    
  55.         SimpleEmail email = new  SimpleEmail();       
  56.         email.setTLS(true );  //是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验   
  57. //      email.setSSL(true);           
  58.         email.setHostName("smtp.gmail.com" );          
  59.         email.setAuthentication("***@gmail.com" "***" );    //用户名和密码     
  60.             
  61.         try      
  62.         {    
  63.           email.addTo("lifangxin2050@163.com" );  //接收方     
  64.             email.addCc("ss327@163.com" );  //抄送方       
  65.             email.addBcc("ss377@163.com" );  //秘密抄送方   
  66.             email.setSubject("Java Mail Test" );          //标题        
  67.             email.setMsg("Just a simple send test ." );    //内容        
  68.             email.send();     
  69.                 
  70.         } catch  (EmailException e) {    
  71.             e.printStackTrace();    
  72.         }     
  73.     }    
  74. }  



上面的邮件标题和内容用的都是英文,如果改为中文呢?我试了一下,结果邮件标题不是乱码,而邮件内容则中文部分是乱码。设置其charSet为GB2312或者UTF-8后就可以发送中文邮件了,显示正常了。如下面的代码。 

Java代码  收藏代码
  1. Java代码  
  2. import  org.apache.commons.mail.EmailException;    
  3. import  org.apache.commons.mail.SimpleEmail;    
  4.    
  5. public   class  Send     
  6. {    
  7.     public  Send()    
  8.     {    
  9.             
  10.     }    
  11.         
  12.     public   static   void  main(String[] args)    
  13.     {    
  14.         send();    
  15.     }    
  16.         
  17.     public   static   void  send()    
  18.     {    
  19.         SimpleEmail email = new  SimpleEmail();       
  20.         email.setTLS(true );            
  21.         email.setHostName("smtp.gmail.com" );          
  22.         email.setAuthentication("lifangxin2050@gmail.com" "sdzzczqqyyxy" );       
  23.             
  24.         try      
  25.         {    
  26.             email.addTo("lifangxin2050@163.com" );    
  27.             email.setFrom("lifangxin2050@gmail.com" );        //我方        
  28.                 
  29.             email.setSubject("Java发送邮件测试" );                  //标题        
  30.                 
  31.             email.setCharset("GB2312" );                      //设置Charset     
  32.                 
  33.             email.setMsg("这是一封Java程序发出的测试邮件。" );      //内容        
  34.                 
  35.             email.send();     
  36.                 
  37.         } catch  (EmailException e) {    
  38.             e.printStackTrace();    
  39.         }     
  40.     }    
  41. }    



怎么样?简单吧~~~ 
有人这时说到了网页邮件,其实只需要把上面SimpleEmail换成HtmlEmail,然后设置邮件 内容的方法由setMsg(String str)变为setHtmlMsg(String str)就可以了,这样就可以再邮件里使用<br/>等html标签来控制邮件的格式了. 
还有人问,那么附件呢?别急,我们马上就来做个带附件发送的代码 

Java代码  收藏代码
  1. import  java.net.MalformedURLException;  
  2.   
  3. import  java.net.URL;  
  4.   
  5. import  org.apache.commons.mail.EmailAttachment;  
  6.   
  7. import  org.apache.commons.mail.EmailException;  
  8.   
  9. import  org.apache.commons.mail.MultiPartEmail;  
  10.   
  11. publicclass AttachmentMailTest {  
  12.   
  13.     publicstaticvoid main(String[] args) throws  EmailException, MalformedURLException {  
  14.   
  15. //     创建一个Email附件   
  16.   
  17.        EmailAttachment emailattachment = new  EmailAttachment();  
  18.   
  19.        emailattachment.setPath("/biao_05.jpg" );  
  20.   
  21. //     emailattachment.setURL(new URL("http://www.blogjava.net/bulktree/picture/bulktree.jpg"));   
  22.   
  23.        emailattachment.setDisposition(EmailAttachment.ATTACHMENT);  
  24.   
  25.        emailattachment.setDescription("This is Smile picture" );  
  26.   
  27.        emailattachment.setName("bulktree" );  
  28.   
  29. //     创建一个email   
  30.   
  31.        MultiPartEmail multipartemail = new  MultiPartEmail();  
  32.   
  33.        multipartemail.setHostName("smtp.163.com" );  
  34.   
  35.        multipartemail.addTo("bulktree@126.com" "bulktree" );  
  36.   
  37.        multipartemail.setFrom("bulktree@163.com" "bulktree" );  
  38.   
  39.        multipartemail.setAuthentication("bulktree" "123456" );  
  40.   
  41.        multipartemail.setSubject("This is a attachment Email" );  
  42.   
  43.        multipartemail.setMsg("this a attachment Eamil Test" );  
  44.   
  45.        //添加附件   
  46.   
  47.        multipartemail.attach(emailattachment);  
  48.   
  49.        //发送邮件   
  50.   
  51.        multipartemail.send();  
  52.   
  53.       System.out.println("The attachmentEmail send sucessful!!!" );  
  54.     }  
  55. }  



就这样,附件也发送成功了,大家可以试一下,另外这个项目是开源的,大家可以取下载它的src来看看,我暂时就说到这儿.. 

不过用这个commons-email-1.1.jar实现发邮件还是有2个值得注意的地方: 
  1.前面提到mail.jar和activation.jar包的问题,这两个包需要额外下载并且必不可少的两个包 
  2.不知是否是我使用错误或者软件环境导致,我在第一次使用时,出现了一个奇怪的异常:

Java代码  收藏代码
  1. Exception in thread  "main"  java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream  



  在网上有人说是因为JavaEE版本和JavaMail的版本不一致导致的.我用的是jdk1.6.查了半天,没找到是哪里冲突了,于是我建web项目 时,选择1.4版本,于是没有出现任何问题,可以正常使用,估计应该是myeclipse建项目时自带的jar包引起了这个问题.我用的是 myeclipse 6.0.不知道在eclipse或其他版本的myeclipse上是否会出现这个问题

分享到:
评论

相关推荐

    javamail-1.4.7.7z

    Java mail-1.4.7.jar,java发送邮件jar包。通过这个Jar包可实现基于Java的邮件发送,可以应用于Loadrunner或Jmeter中的测试报告邮件发送

    完整代码,基于jsp 邮件开发 javamail

    完整代码,基于jsp 邮件开发 javamail.7z

    javamail1_4_7 (2).7z

    下载自https://www.oracle.com/java/technologies/java-archive-eepla-downloads.html#javamail-1.4.5-oth-JPR

    Java邮件开发Fundamentals of the JavaMail API

    Fundamentals of the JavaMail API Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Table of Contents If you're viewing this document online, you can click ...

    用javamail发邮件必须的三个jar包.7z

    用javamail发邮件必须的三个jar包跟其他的不知道什么作用的包 mail.jar+activation.jar+additionnal.jar

    互联网创意产品众筹平台

    │ 11.Maven项目模块划分-引用依赖包( f- {5 L4 F2 i8 z+ c* U │ 12.项目环境搭建细节-监听器 │ 13.项目环境搭建细节-过滤器 │ 14.项目环境搭建细节-核心控制器 │ 15.项目环境搭建细节-spring-springmvc相关配置...

    Java数据库编程宝典2

    16.3 使用JDBC驱动的JavaMail发送电子邮件信息 16.3.1 使用JSP页面和JavaMail发送电子邮件 16.3.2 使用有SendMailBean的JSP页面 16.3.3 部署 16.4 使用JavaMail API接收电子邮件 16.5 小结 第4部分 数据库、...

    Java数据库编程宝典4

    16.3 使用JDBC驱动的JavaMail发送电子邮件信息 16.3.1 使用JSP页面和JavaMail发送电子邮件 16.3.2 使用有SendMailBean的JSP页面 16.3.3 部署 16.4 使用JavaMail API接收电子邮件 16.5 小结 第4部分 数据库、...

    Java数据库编程宝典1

    16.3 使用JDBC驱动的JavaMail发送电子邮件信息 16.3.1 使用JSP页面和JavaMail发送电子邮件 16.3.2 使用有SendMailBean的JSP页面 16.3.3 部署 16.4 使用JavaMail API接收电子邮件 16.5 小结 第4部分 数据库、...

    Java数据库编程宝典3

    16.3 使用JDBC驱动的JavaMail发送电子邮件信息 16.3.1 使用JSP页面和JavaMail发送电子邮件 16.3.2 使用有SendMailBean的JSP页面 16.3.3 部署 16.4 使用JavaMail API接收电子邮件 16.5 小结 第4部分 数据库、...

    java常用工具类打包下载

    J2EE常用工具类汇总 J2EE常用工具类—Value Object工具类 J2EE常用工具类—Json工具 J2EE常用工具类—Jdbc操作 ...J2EE常用工具类——邮件处理类(javaMail发送邮件) J2EE常用工具类——字符串工具类

Global site tag (gtag.js) - Google Analytics