`
newleague
  • 浏览: 1492305 次
  • 性别: 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();
    }
}
分享到:
评论

相关推荐

    j2ee javamail

    j2ee javamail对javamail进行了详细的介绍

    【读书笔记】Java参考大全-J2EE5版本

    8. **JavaMail**和**JMS**:J2EE5提供了对邮件和消息队列的API,如JavaMail API用于发送和接收电子邮件,而Java Message Service (JMS) API则用于实现企业级的消息传递。 在压缩包的"src"目录下,很可能是包含了...

    J2EE5_ API_中文版

    《J2EE5_ API_中文版》是一个针对Java企业级应用开发的重要参考资料,它提供了J2EE5版本的API接口详细中文解释,对于开发者来说是极具价值的学习资源。J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出...

    j2ee 5 API J2EE

    JavaMail API是用于处理电子邮件的应用编程接口,它在J2EE 5中得到了加强,提供了更多处理邮件服务器交互的功能。 总的来说,J2EE 5 API是Java企业级开发的重要里程碑,它引入的诸多新特性和改进,大大降低了开发...

    JavaMail开发<精通J2EE网络编程 12章>

    在 J2EE 网络编程中,JavaMail 是一个不可或缺的工具,尤其对于那些需要进行邮件交互的应用来说。本章节将深入探讨 JavaMail 的基础、安装配置以及核心类的使用。 ### 12.1 JavaMail 基础 #### 12.1.1 邮件协议 ...

    J2EE的公用jar包

    5. **JavaMail**:J2EE 5中包含了处理邮件服务的JavaMail API,允许应用发送和接收电子邮件。 6. **Java Message Service (JMS)**:JMS是Java平台的消息中间件API,用于在分布式环境中进行异步通信。它在J2EE 5中...

    j2ee与中间件教材配套

    5. **JavaMail API** 和 **Java Message Service (JMS)**:这两者用于异步通信和消息传递,JMS允许应用程序创建、发送、接收和读取消息,而JavaMail API则提供了邮件处理功能。 6. **Java Servlet容器**:如Tomcat...

    J2EE应用与BEA.WebLogic.Server第2版.pdf

    第十一章 使用 WebLogic Server JavaMail 连接 Internet 邮件 第十二章 管理 WebLogic Server 8.1 第十三章 WebLogic Server 8.1 应用程序安全 第十四章 设计产品部署 第十五章 Web 拍卖设计目标 第十六章 WebLogic ...

    J2EE JavaMail

    the JavaMail API provides a platform-independent and protocol-independent framework to build mail and messaging applications. The JavaMail API is available as an optional package for use with Java SE ...

    美河提供.J2EE应用与BEA.WebLogic.Server第2版

    《J2EE应用与BEA.WebLogic.Server第2版》是由美河提供的关于Java企业级应用开发和BEA WebLogic Server服务器使用的专著。这本书详细介绍了如何利用J2EE(Java 2 Platform, Enterprise Edition)技术构建分布式、多层...

    javamail(带界面的javamail)

    JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...

    J2EE_5_API_EN

    在J2EE 5 API中,以下几个关键的技术和接口值得我们深入了解: 1. **JavaServer Pages (JSP)**:JSP是Java Web开发中的视图层技术,允许开发者在HTML或XML文档中嵌入Java代码,从而动态生成网页内容。J2EE 5对JSP...

    JavaMail-1.5 API

    文件中的内容表明JavaMail API版本1.5在2013年5月31日发布,并且这个版本为最终发布版。Oracle公司拥有版权,并在2013年授予了与JavaMail API相关的权限和许可。许可证的详细信息定义了开发者可以和不可以进行的操作...

    j2ee试题j2ee试题

    9. **JAF(JavaBeans Activation Framework)** 和 **JavaMail**:JAF 用于处理MIME消息,JavaMail 则用于发送和接收电子邮件。试题可能涉及 MIME 类型、邮件的创建和发送等。 10. **Spring 框架**:虽然 Spring ...

    J2EE 5 Tutorial

    J2EE 5中,JSP 2.1版本引入了表达式语言(EL)和自定义标签库,增强了与JavaBeans组件的交互。 2. **Servlet**:Servlet是Java编程语言中的一个接口,用于扩展服务器的功能。在J2EE 5中,Servlet 2.5规范改进了生命...

    J2EE5.0帮助手册_J2EE文档_

    **J2EE 5.0 帮助手册:核心概念与技术详解** J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的平台,而J2EE 5.0是其发展的一个重要版本。这个版本引入了许多改进和新...

    企业级servlet 和J2EE.rar

    此外,J2EE还支持JavaMail API,使得程序能够发送和接收电子邮件,以及Java Messaging Service (JMS),用于实现异步通信。 在实际应用中,Servlet通常与JSP、Filter和Listener等组件一起使用,形成Web应用的基础...

    J2EE_5.0 api J2EE_5.0 api J2EE_5.0 api

    JPA 1.0引入了ORM(Object-Relational Mapping)机制,使得对象与关系数据库之间的映射更为直观,简化了数据访问层的开发。 4. **Enterprise JavaBeans (EJB) 3.0**: EJB 3.0是J2EE 5.0中的关键组件,它极大地简化...

    j2ee包含的jar文件

    2. **J2EE组件与JAR** - **Enterprise JavaBeans (EJB)**:EJB是J2EE的核心组件,用于构建可复用的业务逻辑。EJB相关的jar文件包括`ejb.jar`,它包含了EJB组件的接口和实现类,以及部署描述符(`ejb-jar.xml`)。...

    j2ee原理

    J2EE包含JavaMail API,用于发送和接收电子邮件。而Java Message Service(JMS)则提供了一种标准接口来处理消息队列,实现异步通信。 11. **Web服务** J2EE支持SOAP(Simple Object Access Protocol)和RESTful...

Global site tag (gtag.js) - Google Analytics