`
longgangbai
  • 浏览: 7331235 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于javamail与j2ee5的常遇到的问题

阅读更多

 

 

package com.javamail.test;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class TestJavaMail {

    public static void main(String[] arge) throws Exception {
        String from = "pizza@trendcom.com.cn";
        String to = "pizza@trendcom.com.cn";
        String subject = "Test mail";
        String body = "A text mail";
        Properties props = System.getProperties();
        // 设置SMTP邮件服务器:
        props.put("mail.smtp.host", "mail.trendcom.com.cn");
        // SMTP服务器需要验证:
        props.put("mail.smtp.auth", "true");
        //设置邮件传输协议为:smtp
        props.put( "mail.transpost.protocol", "smtp");
        //设置邮件服务器端口
        props.put("mail.smtp.port", "25");
        // 传入用户名和口令:
        Session session = Session.getDefaultInstance(props,
                new PasswordAuthenticator("pizza@trendcom.com.cn", "pizza"));
        // 创建新邮件:
        Message msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(from));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
        msg.setSubject(subject);
        msg.setText(body);
        msg.setSentDate(new Date());
        // 发送:
        Transport.send(msg);
    }
}

class PasswordAuthenticator extends Authenticator {

    private String username;
    private String password;

    public PasswordAuthenticator(String username, String password) {
        this.username = username;
        this.password = password;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }

}

 

 

package com.javamail.test;

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class TestJavaMailFile {
 
 public static void main(String[] args) {
  TestJavaMailFile mailFile=new TestJavaMailFile();
  mailFile.setHost("mail.trendcom.com.cn");
  mailFile.setUser("pizza@trendcom.com.cn");
  mailFile.setPassword("pizza");
  mailFile.setFrom("pizza@trendcom.com.cn");
  mailFile.setTo("pizza@trendcom.com.cn");
  mailFile.setSubject("附件邮件");
  mailFile.setText("请主意查收附件");
  mailFile.attachfile("test.doc");
  System.out.println(mailFile.startSend());
 }
 class PasswordAuthenticator extends Authenticator {

     private String username;
     private String password;

     public PasswordAuthenticator(String username, String password) {
         this.username = username;
         this.password = password;
     }

     protected PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(username, password);
     }

 }
 // 定义发件人、收件人、主题等
 String user="";
 String password="";
 String to = "";
 String from = "";
 String host = "";
 String filename = "";
 String subject = "";
 String text="";
 // 用于保存发送附件的文件名的集合
 Vector file = new Vector();

 public TestJavaMailFile(){
  
 }


 // 该方法用于收集附件名
 public void attachfile(String fname) {
  file.addElement(fname);
 }

 // 开始发送信件的方法
 public boolean startSend() {
  // 创建Properties对象
  Properties props = System.getProperties();
  // 创建信件服务器
  props.put("mail.smtp.host", host);
      // SMTP服务器需要验证:
        props.put("mail.smtp.auth", "true");
        //设置邮件传输协议为:smtp
        props.put( "mail.transpost.protocol", "smtp");
        //设置邮件服务器端口
        props.put("mail.smtp.port", "25");
  // 得到默认的对话对象
  Session session = Session.getDefaultInstance(props,new PasswordAuthenticator(getUser(),getPassword()));
  try {
   // 创建一个消息,并初始化该消息的各项元素
   MimeMessage msg = new MimeMessage(session);
   msg.setFrom(new InternetAddress(from));
   InternetAddress[] address = { new InternetAddress(to) };
   msg.setRecipients(Message.RecipientType.TO, address);
   msg.setSubject(subject);
   // 后面的BodyPart将加入到此处创建的Multipart中
   Multipart mp = new MimeMultipart();
   // 利用枚举器方便的遍历集合
   Enumeration efile = file.elements();
   // 检查序列中是否还有更多的对象
   while (efile.hasMoreElements()) {
    MimeBodyPart mbp = new MimeBodyPart();
    // 选择出每一个附件名
    filename = efile.nextElement().toString();
    // 得到数据源
    FileDataSource fds = new FileDataSource(filename);
    // 得到附件本身并至入BodyPart
    mbp.setDataHandler(new DataHandler(fds));
    // 得到文件名同样至入BodyPart
    mbp.setFileName(fds.getName());
    mp.addBodyPart(mbp);
   }
   // 移走集合中的所有元素
   file.removeAllElements();
   //创建新的MimeBodyPart
   MimeBodyPart messageBodyPart = new MimeBodyPart();
   //把正文信息附加到MimeBodyPart
   messageBodyPart.setText(text);
   //Multipart添加正文信息
      mp.addBodyPart(messageBodyPart);  
   // Multipart加入到信件
   msg.setContent(mp);
   // 设置信件头的发送日期
   msg.setSentDate(new Date());
   // 发送信件
   Transport.send(msg);
  } catch (MessagingException mex) {
   mex.printStackTrace();
   Exception ex = null;
   if ((ex = mex.getNextException()) != null) {
    ex.printStackTrace();
   }
   return false;
  }
  return true;
 }

 public String getUser() {
  return user;
 }

 public void setUser(String user) {
  this.user = user;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getTo() {
  return to;
 }

 public void setTo(String to) {
  this.to = to;
 }

 public String getFrom() {
  return from;
 }

 public void setFrom(String from) {
  this.from = from;
 }

 public String getHost() {
  return host;
 }

 public void setHost(String host) {
  this.host = host;
 }

 public String getSubject() {
  return subject;
 }

 public void setSubject(String subject) {
  this.subject = subject;
 }


 public String getText() {
  return text;
 }


 public void setText(String text) {
  this.text = text;
 }
}

 

 

测试了一下,不行呀,报Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: mail.sina.com.cn, port: 25;

解决方案:邮件smtp:服务器不正确 

 如果新浪邮件服务器:smtp.sina.com

同样的错误可能是邮件服务器不稳定造成的!

 

 

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:
用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar
,然后删除mail,一切就ok了.


分享到:
评论

相关推荐

    J2EE5_ API_中文版

    《J2EE5_ API_中文版》是一个针对Java企业级应用开发的重要参考资料,它提供了...在实际开发过程中,结合这个文档,开发者可以快速定位所需的方法和类,解决遇到的问题,从而高效地构建出稳定、可靠的J2EE应用程序。

    解决JavaMail无法发送邮件的错误(在J2EE项目中)

    在J2EE项目中,JavaMail是用于发送电子邮件的标准API,但有时开发者会遇到无法成功发送邮件的问题。本文将深入探讨这些常见问题及其解决方案,同时介绍相关资源和库。 首先,JavaMail API允许我们在Java应用程序中...

    J2EE_API_EN(J2EE帮助文档英文版)

    J2EE_API文档不仅适用于学习,也是IDE如Eclipse、IntelliJ IDEA等进行J2EE开发时的重要参考,帮助开发者理解和使用各种API接口,解决开发过程中遇到的问题。 **英文版与中文版** 虽然J2EE_API是英文版,但对于熟练...

    J2EE+Tutorial中文版,《J2EE指南》中文版

    通过"J2EE+Tutorial中文版.chm"这个文档,学习者可以了解到J2EE的完整体系,理解各种组件的作用,掌握如何设计和部署J2EE应用,以及如何解决开发过程中遇到的问题。这个教程还可能包括实际的示例代码和练习,帮助...

    J2EE初学者需要注意的问题

    J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为解决企业级应用开发中遇到的复杂性和标准化问题而提出的一套解决方案。它基于Java技术,旨在为开发者提供一套标准化的框架,以简化企业级应用的...

    J2EE开发技术全接触

    5. **稳定的可用性**:对于需要7x24小时不间断服务的应用来说,J2EE提供了强大的支持,确保应用在遇到故障时可以快速恢复,最大程度减少服务中断的时间。 #### 三、J2EE四层模型 J2EE通常被描述为一个四层模型: ...

    J2EE专业项目实例开发

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,用于构建和部署可扩展、安全且高度可靠...实践中遇到的问题和解决方法也将深化对J2EE架构的理解,为未来的企业级项目开发打下坚实基础。

    JAVA入门: J2EE的学习流程

    - 遇到问题时学会利用搜索引擎、官方文档及社区资源寻求解决方案。 - 不断积累实践经验,提高解决问题的能力。 综上所述,J2EE的学习是一个系统而漫长的过程,需要从基础知识入手,逐步深入到高级主题,并通过...

    企业级j2ee应用开发框架套件

    8. **JavaMail API**:用于发送和接收电子邮件,常用于系统通知和验证。 9. **Java WebSocket API**:提供全双工、低延迟的客户端-服务器通信,适合实时应用。 这个"企业级j2ee应用开发框架套件"可能还包括了流行...

    j2ee.rar_The Professional

    《J2EE详解:专业Java开发者的进阶之路》 J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台的企业...同时,了解这些知识点也有助于理解和解决实际工作中遇到的各种问题,提升在企业级项目中的开发能力。

    java面试题之葵花宝典

    首先,对于Java语言基础,面试官通常会询问关于变量、数据类型、运算符、流程控制、异常处理、面向对象特性(封装、继承、多态)等方面的问题。此外,理解垃圾回收机制、线程并发、集合框架(如ArrayList、...

    java_ee_sdk-5-javadocs中文英文双版

    7. **JAF(Java Activation Framework)**:JAF用于处理不同数据类型的激活和序列化,常与JavaMail一起使用。 8. **JAX-RS(Java API for RESTful Web Services)**:JAX-RS提供了创建RESTful Web服务的API,使得...

    java学习方向.pdf

    在Java的学习旅程中,经常会遇到初学者对如何从基础的J2SE(Java 2 Platform, Standard Edition)过渡到更高级的J2EE(Java 2 Platform, Enterprise Edition)感到困惑。J2ME、J2SE和J2EE是Java平台的三个不同版本,...

    基于java的博客网站设计与开发毕业论文(20210806153521).pdf

    12. 面临的问题及解决方法:在开发过程中,会遇到各种问题,文档中提到了博客实现过程中遇到的问题和解决方案。这是项目开发中常见的一环,有效的识别和解决问题是确保项目顺利进行的关键。 上述知识点都是设计和...

    TongWeb5.0快速使用手册

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

    如何学习java如何学习java.doc

    - **JCA**:J2EE Connector Architecture,提供与企业信息系统的集成。 3. **管理技术**: - **J2EE Deployment Specification**:部署规范,指导应用程序的部署流程。 - **J2EE Management Specification**:...

    如何学习java--(牛人指点路线)

    在学习Java的过程中,首先需要理解Java的三个主要平台版本:J2ME(Java 2 Platform, Micro Edition),J2SE(Java 2 Platform, Standard Edition),以及J2EE(Java 2 Platform, Enterprise Edition)。J2ME主要用于...

    java学习(ssh) action structs spring hibernet

    在深入探讨Java学习过程中遇到的关于SSH(Struts、Spring、Hibernate)框架的问题之前,我们先来理解一下这三个框架的基本概念及其在企业级应用开发中的作用。 #### Struts框架 Struts是一个基于MVC(Model-View-...

    如何学习Java(转载某位经过锤炼而成为高手的同行)

    3. **参与社区**:加入像CSDN论坛、Java研究组等技术社区,不仅可以获取最新的Java资讯,还能在遇到问题时得到及时的帮助。 4. **项目实战**:理论结合实践,寻找Java相关的项目实习或兼职,通过实际项目锻炼自己的...

Global site tag (gtag.js) - Google Analytics