J2ee5与javamail的冲突

J2ee5自带的activation,mail的jar包会与javamail的jar产生冲突,

解决方法是找到myeclipse里面的javaee.jar,打开这个Jar包找到mail与activation文件夹目录将其删除,刷新工程后即可。

javaee.jar在我本机的路径如下:

D:\eclipse\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710\data\libraryset\EE_5

 

【javamail实现代码】

Mail类:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> package  com.wintv.common;

import  java.util.Iterator;
import  java.util.LinkedList;
import  java.util.List;
import  java.util.Properties;

import  javax.activation.DataHandler;
import  javax.activation.FileDataSource;
import  javax.mail.BodyPart;
import  javax.mail.Message;
import  javax.mail.Multipart;
import  javax.mail.Session;
import  javax.mail.Transport;
import  javax.mail.internet.InternetAddress;
import  javax.mail.internet.MimeBodyPart;
import  javax.mail.internet.MimeMessage;
import  javax.mail.internet.MimeMultipart;

public   class  Mail {

    
private  MimeMessage mimeMsg;  // 邮件对象
    
    
private  Session session;  // 发送邮件的Session会话
    
    
private  Properties props; // 邮件发送时的一些配置信息的一个属性对象
    
    
private  String sendUserName;  // 发件人的用户名
    
    
private  String sendUserPass;  // 发件人密码
    
    
private  Multipart mp; // 附件添加的组件
    
    
private  List files  =   new  LinkedList(); // 存放附件文件

    
public  Mail(String smtp) {
        sendUserName 
=   "" ;
        sendUserPass 
=   "" ;
        setSmtpHost(smtp);
//  设置邮件服务器
        createMimeMessage();  //  创建邮件
    }

    
public   void  setSmtpHost(String hostName) {
        
if  (props  ==   null )
            props 
=  System.getProperties();
        props.put(
" mail.smtp.host " , hostName);
    }
    
    
public   boolean  createMimeMessage() {
        
try  {
            
//  用props对象来创建并初始化session对象
            session  =  Session.getDefaultInstance(props,  null );
        } 
catch  (Exception e) {
            System.err.println(
" 获取邮件会话对象时发生错误! "   +  e);
            
return   false ;
        }
        
try  {
            mimeMsg 
=   new  MimeMessage(session);   //  用session对象来创建并初始化邮件对象
            mp  =   new  MimeMultipart(); //  生成附件组件的实例
        }  catch  (Exception e) {
            
return   false ;
        }
        
return   true ;
    }
    
/**
     * 设置SMTP的身份认证
     
*/
    
public   void  setNeedAuth( boolean  need) {
        
if  (props  ==   null )
            props 
=  System.getProperties();
        
if  (need)
            props.put(
" mail.smtp.auth " " true " );
        
else
            props.put(
" mail.smtp.auth " " false " );
    }

    
/**
     * 进行用户身份验证时,设置用户名和密码
     
*/
    
public   void  setNamePass(String name, String pass) {
        sendUserName 
=  name;
        sendUserPass 
=  pass;
    }
    
/**
     * 设置邮件主题
     * 
@param  mailSubject
     * 
@return
     
*/
    
public   boolean  setSubject(String mailSubject) {
        
try  {
            mimeMsg.setSubject(mailSubject);
        } 
catch  (Exception e) {
            
return   false ;
        }
        
return   true ;
    }
    
/**
     * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
     * 
@param  mailBody
     * 
@return
     
*/
    
public   boolean  setBody(String mailBody) {
        
try  {
            BodyPart bp 
=   new  MimeBodyPart();
            bp.setContent(
" <meta http-equiv=Content-Type content=text/html; charset=UTF-8> " +  mailBody,  " text/html;charset=UTF-8 " );
            
//  在组件上添加邮件文本
            mp.addBodyPart(bp);
            
            
// 下面这段代码是给html里面加上图片的
//             FileDataSource   fds   =   new   FileDataSource("d:/2dy.jpg");   
//             MimeBodyPart   mbp2   =   new   MimeBodyPart();   
//             mbp2.setFileName(fds.getName());   
//             mbp2.setText("This   is   a   beautiful   car   !");   
//             mbp2.setDataHandler(new   DataHandler(fds));   
//             mbp2.setHeader("Content-ID",fds.getName());   
//             mp.addBodyPart(mbp2);
            
            
        } 
catch  (Exception e) {
            System.err.println(
" 设置邮件正文时发生错误! "   +  e);
            
return   false ;
        }
        
return   true ;
    }
    
/**
     * 增加发送附件
     * 
@param  filename
     * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
     * 
@return
     
*/
    
public   boolean  addFileAffix(String filename) {
        
try  {
            BodyPart bp 
=   new  MimeBodyPart();
            FileDataSource fileds 
=   new  FileDataSource(filename);
            bp.setDataHandler(
new  DataHandler(fileds));
            bp.setFileName(fileds.getName());  
//  发送的附件前加上一个用户名的前缀
            mp.addBodyPart(bp); //  添加附件
            files.add(fileds);
        } 
catch  (Exception e) {
            System.err.println(
" 增加邮件附件: "   +  filename  +   " 发生错误! "   +  e);
           
return   false ;
        }
        
return   true ;
   }
   
public   boolean  delFileAffix(){
          
try  {
            FileDataSource fileds 
=   null ;
            
for (Iterator it  =   files.iterator() ;it.hasNext();) {
               fileds 
=  (FileDataSource)it.next(); 
               
if (fileds  !=   null   &&  fileds.getFile()  !=   null ){
                   fileds.getFile().delete();
               }
            }
           }
catch  (Exception e) {
             
return   false ;
          }
        
return   true ;
    }
    
/**
     * 设置发件人地址
     * 
@param  from
     * 发件人地址
     * 
@return
     
*/
    
public   boolean  setFrom(String from) {
        
try  {
            mimeMsg.setFrom(
new  InternetAddress(from));
        } 
catch  (Exception e) {
            
return   false ;
        }
        
return   true ;
    }
    
/**
     * 设置收件人地址
     * 
@param  to收件人的地址
     * 
@return
     
*/
    
public   boolean  setTo(String to) {
        
        
if  (to  ==   null )
            
return   false ;
        
try  {
            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        } 
catch  (Exception e) {
            
return   false ;
        }
        
return   true ;
    }

    
/**
     * 发送附件
     * 
@param  copyto
     * 
@return
     
*/
    
public   boolean  setCopyTo(String copyto) {
        
if  (copyto  ==   null )
            
return   false ;
        
try  {
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
        } 
catch  (Exception e) {
            
return   false ;
        }
        
return   true ;
    }
    
/**
     * 发送邮件
     * 
@return
     
*/
    
public   boolean  sendEmail() {
        
try  {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println(
" 正在发送邮件. " );
            Session mailSession 
=  Session.getInstance(props,  null );
            Transport transport 
=  mailSession.getTransport( " smtp " );
            
//  连接邮件服务器并进行身份验证
            transport.connect((String) props.get( " mail.smtp.host " ), sendUserName,sendUserPass);
            
//  发送邮件
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            System.out.println(
" 发送邮件成功! " );
            transport.close();
            
        } 
catch  (Exception e) {
            System.err.println(
" 邮件发送失败! "   +  e.getMessage());
            
return   false ;
        }
        
return   true ;
    }
}

 

Test:

 

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> package  test;

import  com.wintv.common.Mail;

public   class  Test {
    
public   void  send(){
        
        String Subject 
=   " 找回密码 " ;
        String bodyContent 
=   " 密码:xxx " ;
        String hostName 
=   " mail.wintv.cn " ;
        String fromAddress 
=   " [email protected] " ;
        String fromAPass 
=   " arix04 " ;
        String toAddress 
=   " [email protected] " ;
         
try {

            Mail emailHandle 
=   new  Mail(hostName);
            emailHandle.setFrom(fromAddress);
            emailHandle.setNeedAuth(
true );
            emailHandle.setSubject(Subject);
            emailHandle.setBody(bodyContent);
            emailHandle.setTo(toAddress);
            emailHandle.setFrom(fromAddress);
//             emailHandle.addFileAffix("d:/2dy.jpg"); //  附件文件路径
//             emailHandle.addFileAffix("d:/2dy.jpg"); //  附件文件路径
            emailHandle.setNamePass(fromAddress,fromAPass);
        
            emailHandle.sendEmail();
            
// emailHandle.delFileAffix(); // 删除发送附件信息

        }
catch (Exception ex){
               ex.printStackTrace();
        }
    }

    
public   static   void  main(String []args){
         Test t 
=   new  Test();
         t.send();
    }
}

你可能感兴趣的:(eclipse,html,javaee,MyEclipse)