`
newleague
  • 浏览: 1513898 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

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 
= "yht@wintv.cn";
        String fromAPass 
= "arix04";
        String toAddress 
= "yht207@126.com";
         
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();
    }
}
分享到:
评论

相关推荐

    javamail 测试用例

    一个javamail发送邮件的实例,如果运用于web项目,注意版本冲突的问题.j2ee 1.5 中的mail包中的有个类和mail.jar有冲突,将1.5中mail包中的类删除即可.但是1.4是没有问题的.

    TongWeb5.0快速使用手册

    - **产品定位**:TongWeb5.0是一款面向企业级用户的应用服务器,它依据JavaEE5标准进行设计与开发,为企业级应用提供了稳定、可扩展、易管理且安全的基础平台。 - **核心特点**:TongWeb5.0支持JavaEE5的新特性,...

    java常用jar包集合

    "java常用jar包集合"是一个综合性的资源,涵盖了多种Java开发中常用的技术框架和库,方便开发者快速构建和运行J2EE应用。以下是对这些jar包及其相关知识点的详细说明: 1. **数据库驱动包**: - **JDBC驱动**:...

    spring依赖包讲解.doc

    最后,J2EE相关的jar文件(如activation.jar、jdbc2_0-stdext.jar、jms.jar等)与Spring的邮件支持、JavaMail实现、EJB集成等特性有关。这些依赖通常取决于你的应用程序是否需要使用J2EE的相关服务。 综上所述,...

    Spring包的依赖关系

    - **说明**: 若想使用Spring邮件支持的JavaMail,以及与J2EE环境相关的功能,需要包含这一系列JAR文件。 理解并合理管理这些依赖关系,可以确保Spring应用的健壮性和性能,避免潜在的冲突和兼容性问题。开发者应...

Global site tag (gtag.js) - Google Analytics