`

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

    博客分类:
  • Java
阅读更多
这学期的课程是一个j2ee项目,上次老师检查的时候说我们项目在注册的时候,要有一个邮箱验证的功能,不然谁都能去注册,这样会出现恶意注册。于是网上搜了一下大致知道可以用JavaMail给解决问题。不过试了一下,出现了以下异常:
1.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
2.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream

费解,以为自己代码写出问题了。到Oschina的代码共享区搜了一段代码,结果错误依然存在。网上大牛说java EE 5.0同JavaMail冲突,搜到一种解决办法:
将javaee.jar里面avax下有activation与mail两个文件夹删除
具体路径如下:(我们项目用的是 MyEclipse 8.5,其他版本应该也类似)
MyEclipse安装路径\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5\javaee.jar

用winrar 打开javaee.jar,然后找到 activation与mail,将这两个文件夹删除,然后在你的项目里面导入mail.jar与activation.jar这两个包.于是乎,就可以在你的项目中利用JavaMail发送文件了。
发送邮件代码:来自于http://www.oschina.net/code/snippet_12_1350
import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 使用Gmail发送邮件
 * @author Winter Lau
 */
public class GmailSender {

 public static void main(String[] args) throws AddressException, MessagingException {
  Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
  final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
  // Get a Properties object
  Properties props = System.getProperties();
  props.setProperty("mail.smtp.host", "smtp.gmail.com");
  props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
  props.setProperty("mail.smtp.socketFactory.fallback", "false");
  props.setProperty("mail.smtp.port", "465");
  props.setProperty("mail.smtp.socketFactory.port", "465");
  props.put("mail.smtp.auth", "true");
  final String username = "[邮箱帐号]";
  final String password = "[邮箱密码]";
  Session session = Session.getDefaultInstance(props, new Authenticator(){
      protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(username, password);
      }});

       // -- Create a new message --
  Message msg = new MimeMessage(session);

  // -- Set the FROM and TO fields --
  msg.setFrom(new InternetAddress(username + "@mo168.com"));
  msg.setRecipients(Message.RecipientType.TO, 
    InternetAddress.parse("[收件人地址]",false));
  msg.setSubject("Hello");
  msg.setText("How are you");
  msg.setSentDate(new Date());
  Transport.send(msg);
  
  System.out.println("Message sent.");
 }
}



下面提供修改后的javaee.jar和需要导入到项目中去的包
另外就是一个示例。示例代码来自于http://www.oschina.net/code/snippet_12_1350
2
1
分享到:
评论

相关推荐

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

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

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

    JSP发送邮件实例

    在JSP中发送邮件通常涉及到JavaMail API,这是一个强大的库,允许开发者通过SMTP(简单邮件传输协议)发送邮件。 首先,我们需要导入必要的JavaMail包,包括`javax.mail.*`和`javax.mail.internet.*`。这些包包含了...

    jsp开发的邮件发送项目源码

    发送邮件时,客户端应用程序(在这个项目中是我们的JSP程序)需要连接到SMTP服务器,提供发件人和收件人的邮箱地址,以及邮件正文。SMTP服务器验证发件人身份后,会负责将邮件转发到指定的收件人邮箱。 三、...

    javamail最新版JAR包!

    3. 使用 `Transport` 对象发送邮件,这通常涉及调用 `Transport.send(Message)` 方法。 4. 如果需要接收邮件,可以使用 `Folder` 和 `Store` 对象来连接邮件服务器,打开邮箱并读取邮件。 在实际应用中,JavaMail ...

    Java邮件发送包

    8. **异常处理**:在发送邮件过程中可能会遇到各种错误,如网络问题、认证失败等,因此需要适当地捕获并处理`MessagingException`和`IOException`。 通过理解并熟练应用这些Java邮件发送包中的类和接口,开发者可以...

    JAVAMAIL实例

    - **J2EE.jar**: 包含了JavaMail和JAF库,可以通过安装J2SE EE或直接复制J2EE.jar到项目中。 #### 四、代码解析 以下是对示例代码的主要部分进行详细解析: ##### 4.1 初始化配置 ```java public sendMail() { ...

    J2EE_API.rar

    9. **JavaMail API**:用于创建、发送和接收电子邮件的API,常用于企业级应用中的通知服务。 10. **Java Web Services (JAX-WS, JAX-RS)**:这两套API分别用于创建基于SOAP和RESTful的Web服务,让不同系统间能通过...

    j2ee.rar_The Professional

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

    J2EE1.5 api 英文版手册

    在学习过程中,可以结合实践项目,逐步消化和理解API手册中的概念和用法,这对于提升个人技能和解决实际问题都大有裨益。同时,也可以借助各种在线翻译工具,辅助理解难以理解的部分,确保学习的顺利进行。 总的来...

    java发送的email代码

    Java发送电子邮件是软件开发中的一个常见任务,尤其在企业级应用如Struts、J2EE框架中。这个压缩包可能包含了一个简单的Java程序,用于演示如何使用JavaMail API来发送邮件。下面,我们将深入探讨JavaMail API以及...

    J2EE企业版程序设计代码

    8. **JAVAMAIL API**:用于发送和接收电子邮件的API,常用于企业级应用中的通知系统。 **J2EE应用架构** 在J2EE应用中,通常采用三层架构: 1. **表现层(Presentation Layer)**:包括Web客户端,如HTML、JSP、...

    JAVA入门: J2EE的学习流程

    - 学习JavaMail API发送电子邮件。 - 了解Java XML API (JAXP) 处理XML文档。 #### 五、实战项目 1. **开源项目**: - 参与开源社区的项目,如Jive论坛、Petstore等。 - 实战经验可以帮助加深对理论知识的理解...

    J2EE中文版指南

    8. **JavaMail API**:JavaMail API提供了在Java应用程序中发送和接收电子邮件的能力。 9. **Java API for XML Processing (JAXP)**:JAXP允许Java程序处理XML数据,包括解析、转换和样式表处理。 10. **Java API ...

    j2ee API

    9. **JavaMail API**:用于发送和接收电子邮件,支持多种邮件协议如SMTP、POP3和IMAP。 10. **Java Remote Method Invocation (RMI)**:RMI 允许一个Java对象调用另一个Java对象的方法,即使这个对象位于不同的JVM...

    基于STRUTS的电子邮件系统

    6. **邮件协议**:此系统可能使用SMTP(Simple Mail Transfer Protocol)发送邮件,POP3或IMAP(Internet Message Access Protocol)接收邮件。STRUTS框架并不直接处理这些协议,但开发者会使用JavaMail API来实现...

Global site tag (gtag.js) - Google Analytics