java发邮件

来源:互联网 发布:js混淆加密 编辑:程序博客网 时间:2024/06/05 09:29

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上是否会出现这个问题,如果有知道缘由的朋友,请多指教.

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一手软件崩溃钱卡住了怎么办 身上皮肤很黑怎么办?好想穿短裙 家里有很多小飞虫怎么办 家里有垃圾中飞出虫子怎么办 雷蛇笔记本很烫怎么办 登录监控器的账号锁了怎么办 悦借钱登录账号被锁怎么办 365账号登录被锁怎么办 台式电脑cpu温度过高怎么办 UG2.0打不开错误—15怎么办 键盘空格键删除键失灵怎么办 耳麦检测声音不分左右怎么办 吃生萝卜胃疼怎么办 幼兔拉稀怎么办没精神 自酿米酒酸了怎么办 用冰敷脸感觉红烫了怎么办 吃了海兔的内脏怎么办 吃了鱿鱼的吸盘怎么办 想开个烧烤店没学过怎么办 墨鱼汁弄衣服上怎么办 干鱿鱼泡开发黄怎么办 吃了芥末胃疼怎么办 手撕鱿鱼咸了怎么办 孕妇吃了点芥末怎么办 葡萄酒上面有一层白霉怎么办 手机一不小心把视频删了怎么办 柑橘7月份果实小怎么办 鹦鹉鱼身上有小白点怎么办 鹦鹉鱼身上烂了怎么办 红鹦鹉鱼变黑了怎么办 唱美声总夹嗓子怎么办 发财树树干出褶怎么办 月季花夏天换盆出现黄叶怎么办 刚种的月季枯了怎么办 新买的月季黄叶了怎么办 月季花叶孑轰发黄怎么办? 新种的月季苗弱怎么办? 月季换盆后浇透水叶子黄了怎么办 肉肉移栽后浇透水怎么办 月季花扦插的没长根发芽了怎么办 君子兰发的小苗怎么办