javamail,java发email,发邮件,jaf,activation,j2ee5冲突问题解决

xfire-all-1.2.6 架包冲突解决版本 XFire1.2版本,其中修改了META-INF/services 目录下的javax.xml.ws.spi.Provider文件,解决因为jdk1.6和XFire的架包冲突问题 立即下载

首先要引mail.jar和activation.jar包

下载地址为: javamail:http://java.sun.com/products/javamail/downloads/index.html

                 JAF:http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html

        下载后把.zip解压,然后把mail.jar和activation.jar复制到项目下的web-info/lib下

        值得一说的是java ee 5和这个mail.jar和activation.jar有冲突 这个类在j2ee1.4下运行完全没有问题,但是如果在java ee 5下运行会报类找不到的错误,解决办法就是把myeclipse下的java ee 5的mail.jar和activation.jar干掉

        进到

         E:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5 这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar,然后再运行这个类,一切正常 发邮件的类

 

Java代码 复制代码  收藏代码
  1. package javamail;      
  2.      
  3. import java.util.Properties;      
  4.      
  5. import javax.activation.DataHandler;      
  6. import javax.activation.FileDataSource;      
  7. import javax.mail.Address;      
  8. import javax.mail.BodyPart;      
  9. import javax.mail.Message;      
  10. import javax.mail.Multipart;      
  11. import javax.mail.Session;      
  12. import javax.mail.Transport;      
  13. import javax.mail.internet.InternetAddress;      
  14. import javax.mail.internet.MimeBodyPart;      
  15. import javax.mail.internet.MimeMessage;      
  16. import javax.mail.internet.MimeMultipart;      
  17.      
  18.      
  19. public class SendMail {      
  20.      
  21.  private MimeMessage mimeMsg; // MIME邮件对象      
  22.      
  23.  private Session session; // 邮件会话对象      
  24.      
  25.  private Properties props; // 系统属性      
  26.      
  27.  private boolean needAuth = false; // smtp是否需要认证      
  28.      
  29.  private String username = ""; // smtp认证用户名和密码      
  30.      
  31.  private String password = "";      
  32.      
  33.  private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象      
  34.      
  35.  /**    
  36.   *     
  37.   *     
  38.   *     
  39.   */     
  40.      
  41.  public SendMail() {      
  42.      
  43. //  setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取      
  44.   setSmtpHost("smtp.126.com");// 如果没有指定邮件服务器,就从getConfig类中获取      
  45.      
  46.   createMimeMessage();      
  47.      
  48.  }      
  49.      
  50.  public SendMail(String smtp) {      
  51.      
  52.   setSmtpHost(smtp);      
  53.      
  54.   createMimeMessage();      
  55.      
  56.  }      
  57.      
  58.  /**    
  59.   *     
  60.   * @param hostName    
  61.   *            String    
  62.   *     
  63.   */     
  64.      
  65.  public void setSmtpHost(String hostName) {      
  66.      
  67.   System.out.println("设置系统属性:mail.smtp.host = " + hostName);      
  68.      
  69.   if (props == null)      
  70.    props = System.getProperties(); // 获得系统属性对象      
  71.      
  72.   props.put("mail.smtp.host", hostName); // 设置SMTP主机      
  73.      
  74.  }      
  75.      
  76.  /**    
  77.   *     
  78.   * @return boolean    
  79.   *     
  80.   */     
  81.      
  82.  public boolean createMimeMessage()      
  83.      
  84.  {      
  85.      
  86.   try {      
  87.      
  88.    System.out.println("准备获取邮件会话对象!");      
  89.      
  90.    session = Session.getDefaultInstance(props, null); // 获得邮件会话对象      
  91.      
  92.   }      
  93.      
  94.   catch (Exception e) {      
  95.      
  96.    System.err.println("获取邮件会话对象时发生错误!" + e);      
  97.      
  98.    return false;      
  99.      
  100.   }      
  101.      
  102.   System.out.println("准备创建MIME邮件对象!");      
  103.      
  104.   try {      
  105.      
  106.    mimeMsg = new MimeMessage(session); // 创建MIME邮件对象      
  107.      
  108.    mp = new MimeMultipart();      
  109.      
  110.    return true;      
  111.      
  112.   }      
  113.      
  114.   catch (Exception e) {      
  115.      
  116.    System.err.println("创建MIME邮件对象失败!" + e);      
  117.      
  118.    return false;      
  119.      
  120.   }      
  121.      
  122.  }      
  123.      
  124.  /**    
  125.   *     
  126.   * @param need    
  127.   *            boolean    
  128.   *     
  129.   */     
  130.      
  131.  public void setNeedAuth(boolean need) {      
  132.      
  133.   System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);      
  134.      
  135.   if (props == null)      
  136.    props = System.getProperties();      
  137.      
  138.   if (need) {      
  139.      
  140.    props.put("mail.smtp.auth", "true");      
  141.      
  142.   } else {      
  143.      
  144.    props.put("mail.smtp.auth", "false");      
  145.      
  146.   }      
  147.      
  148.  }      
  149.      
  150.  /**    
  151.   *     
  152.   * @param name    
  153.   *            String    
  154.   *     
  155.   * @param pass    
  156.   *            String    
  157.   *     
  158.   */     
  159.      
  160.  public void setNamePass(String name, String pass) {      
  161.      
  162.   username = name;      
  163.      
  164.   password = pass;      
  165.      
  166.  }      
  167.      
  168.  /**    
  169.   *     
  170.   * @param mailSubject    
  171.   *            String    
  172.   *     
  173.   * @return boolean    
  174.   *     
  175.   */     
  176.      
  177.  public boolean setSubject(String mailSubject) {      
  178.      
  179.   System.out.println("设置邮件主题!");      
  180.      
  181.   try {      
  182.      
  183.    mimeMsg.setSubject(mailSubject);      
  184.      
  185.    return true;      
  186.      
  187.   }      
  188.      
  189.   catch (Exception e) {      
  190.      
  191.    System.err.println("设置邮件主题发生错误!");      
  192.      
  193.    return false;      
  194.      
  195.   }      
  196.      
  197.  }      
  198.      
  199.  /**    
  200.   *     
  201.   * @param mailBody    
  202.   *            String    
  203.   *     
  204.   */     
  205.      
  206.  public boolean setBody(String mailBody) {      
  207.      
  208.   try {      
  209.      
  210.    BodyPart bp = new MimeBodyPart();      
  211.      
  212.    bp.setContent(      
  213.      "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"     
  214.        + mailBody, "text/html;charset=GB2312");      
  215.      
  216.    mp.addBodyPart(bp);      
  217.      
  218.    return true;      
  219.      
  220.   }      
  221.      
  222.   catch (Exception e) {      
  223.      
  224.    System.err.println("设置邮件正文时发生错误!" + e);      
  225.      
  226.    return false;      
  227.      
  228.   }      
  229.      
  230.  }      
  231.      
  232.  /**    
  233.   *     
  234.   * @param name    
  235.   *            String    
  236.   *     
  237.   * @param pass    
  238.   *            String    
  239.   *     
  240.   */     
  241.      
  242.  public boolean addFileAffix(String filename) {      
  243.      
  244.   System.out.println("增加邮件附件:" + filename);      
  245.      
  246.   try {      
  247.      
  248.    BodyPart bp = new MimeBodyPart();      
  249.      
  250.    FileDataSource fileds = new FileDataSource(filename);      
  251.      
  252.    bp.setDataHandler(new DataHandler(fileds));      
  253.      
  254.    bp.setFileName(fileds.getName());      
  255.      
  256.    mp.addBodyPart(bp);      
  257.      
  258.    return true;      
  259.      
  260.   }      
  261.      
  262.   catch (Exception e) {      
  263.      
  264.    System.err.println("增加邮件附件:" + filename + "发生错误!" + e);      
  265.      
  266.    return false;      
  267.      
  268.   }      
  269.      
  270.  }      
  271.      
  272.  /**    
  273.   *     
  274.   * @param name    
  275.   *            String    
  276.   *     
  277.   * @param pass    
  278.   *            String    
  279.   *     
  280.   */     
  281.      
  282.  public boolean setFrom(String from) {      
  283.      
  284.   System.out.println("设置发信人!");      
  285.      
  286.   try {      
  287.      
  288.    mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人      
  289.      
  290.    return true;      
  291.      
  292.   }      
  293.      
  294.   catch (Exception e)      
  295.      
  296.   {      
  297.    return false;      
  298.   }      
  299.      
  300.  }      
  301.      
  302.  /**    
  303.   *     
  304.   * @param name    
  305.   *            String    
  306.   *     
  307.   * @param pass    
  308.   *            String    
  309.   *     
  310.   */     
  311.      
  312.  public boolean setTo(String to) {      
  313.      
  314.   if (to == null)      
  315.    return false;      
  316.      
  317.   try {      
  318.      
  319.    mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress      
  320.      .parse(to));      
  321.      
  322.    return true;      
  323.      
  324.   }      
  325.      
  326.   catch (Exception e)      
  327.      
  328.   {      
  329.    return false;      
  330.   }      
  331.      
  332.  }      
  333.      
  334.  /**    
  335.   *     
  336.   * @param name    
  337.   *            String    
  338.   *     
  339.   * @param pass    
  340.   *            String    
  341.   *     
  342.   */     
  343.      
  344.  public boolean setCopyTo(String copyto)      
  345.      
  346.  {      
  347.      
  348.   if (copyto == null)      
  349.    return false;      
  350.      
  351.   try {      
  352.      
  353.    mimeMsg.setRecipients(Message.RecipientType.CC,      
  354.      (Address[]) InternetAddress.parse(copyto));      
  355.      
  356.    return true;      
  357.      
  358.   }      
  359.      
  360.   catch (Exception e)      
  361.      
  362.   {      
  363.    return false;      
  364.   }      
  365.      
  366.  }      
  367.      
  368.  /**    
  369.   *     
  370.   * @param name    
  371.   *            String    
  372.   *     
  373.   * @param pass    
  374.   *            String    
  375.   *     
  376.   */     
  377.      
  378.  public boolean sendout()      
  379.      
  380.  {      
  381.      
  382.   try {      
  383.      
  384.    mimeMsg.setContent(mp);      
  385.      
  386.    mimeMsg.saveChanges();      
  387.      
  388.    System.out.println("正在发送邮件....");      
  389.      
  390.    Session mailSession = Session.getInstance(props, null);      
  391.      
  392.    Transport transport = mailSession.getTransport("smtp");      
  393.      
  394.    transport.connect((String) props.get("mail.smtp.host"), username,      
  395.      password);      
  396.      
  397.    transport.sendMessage(mimeMsg, mimeMsg      
  398.      .getRecipients(Message.RecipientType.TO));      
  399.      
  400.    // transport.send(mimeMsg);      
  401.      
  402.    System.out.println("发送邮件成功!");      
  403.      
  404.    transport.close();      
  405.      
  406.    return true;      
  407.      
  408.   }      
  409.      
  410.   catch (Exception e)      
  411.      
  412.   {      
  413.      
  414.    System.err.println("邮件发送失败!" + e);      
  415.      
  416.    return false;      
  417.      
  418.   }      
  419.      
  420.  }      
  421.      
  422.  /**    
  423.   *     
  424.   * Just do it as this    
  425.   *     
  426.   */     
  427.      
  428.  public static void main(String[] args) {      
  429.      
  430.   String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"     
  431.     +      
  432.      
  433.     "<div align=center><a href=http://www.youkuaiyun.com> csdn </a></div>";      
  434.      
  435.   SendMail themail = new SendMail("smtp.126.com");      
  436.      
  437.   themail.setNeedAuth(true);      
  438.      
  439.   if (themail.setSubject("Title") == false)      
  440.    return;      
  441.      
  442.   if (themail.setBody(mailbody) == false)      
  443.    return;      
  444.      
  445.   if (themail.setTo("toEmailUser") == false)      
  446.    return;      
  447.      
  448.   if (themail.setFrom("yourEmailUser") == false)      
  449.    return;      
  450.      
  451.   if (themail.addFileAffix("g://test.txt") == false)      
  452.    return;      
  453.      
  454.   themail.setNamePass("mailUsername", "mailPassword");      
  455.      
  456.   if (themail.sendout() == false)      
  457.    return;      
  458.      
  459.  }      
  460.      
  461. }   
卸载Office 16 Click-to-Run Extensibility Component详细步骤 卸载Office 16 Click-to-Run Extensibility Component详细步骤 第一步:按住键盘上的“Win+R”,打开运行窗口 在运行窗口输入“Installer”回车,打开Installer文件夹 第二步:在Installer文件夹红框最右侧,即“大小”后面,右击选择“其他”,找到“主题”,勾选,点击“确定”,添加主题列成功 第三步:在“主题”列找到“Office 16 Click-to-Run Extensibility Component 阅读详情

相关推荐

计算机视觉:相机模型与参数标定

一、相机投影模型 1、小孔成像 2、相机模型中的四个平面坐标系 3、像主点偏移 4、畸变现象与内参矩阵 5、外参矩阵 二、相机标定:张正友棋盘格标定法 1、张正友棋盘格标定法描述 2、计算外参和内参 2.1 计算单应性矩阵H 2.2 计算内参数矩阵 2.3 计算外参数矩阵 3、实验:MATLAB实现 3.1 实验数据 3.2实验过程 3.3 实验结果 4、实验:OpenCV实现 4.1 实现代码 4.2 实验结果 5、实验分析与总结

DreamWendy的博客 2514

JavaWeb 发送邮箱: javax.activation.DataSource-NotFoundException

出错时,我的javaWeb项目里,只导入了mail.jar,来实现发送邮箱的发送验证码的功能,但是,包了java.lang.ClassNotFoundException: javax.activation.DataSource的异常,也就是没有找到。activation包的异常。 但是别人在运行时,没有此异常,所以很怪。 最后还是jdk使用的版本的问题,我的项目的这个模块使用的SDK是15的jdk,别人使用的是8的jdk。 把这个模块的,包括 SDK、语言级别、Tomcat的jre,全部都换成8的环境,就可

norang的博客 1298

Global Mapper与ArcGIS双剑合璧:自动化与半自动矢量化提取地物轮廓实战

本文详细介绍了如何结合Global Mapper的自动化批量提取与ArcGIS的半自动精细修整功能,高效完成地物轮廓矢量化工作。通过实战案例,阐述了利用Global Mapper快速抓取初步轮廓,再借助ArcGIS的ArcScan等工具进行精细化编辑和优化的完整工作流,有效提升地理信息数据处理效率。

weixin_29284657的博客 119

解决jQuery和其他库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局对象都被很好地存储在jQuery命名空间里,因此当把jQuery和其他JavaScript库(例如Prototype、MooTools或Zepto)一起使用时,不会引起冲突。 注意:默认情况下,jQuery用$作为自身的快捷方式。在jQuery中,使用jQuery或者$来做选择符,是等价的。 比如: $('#title')

热爱思考、活力满满、开朗爱笑的年轻人 2627

树莓派4B玩转ROS2 Humble:Ubuntu Desktop一键安装与配置教程

本文详细介绍了在树莓派4B上安装和配置ROS2 Humble的完整教程,包括硬件准备、Ubuntu Desktop系统安装、一键部署ROS2、网络配置优化以及常见问题解决方案。通过简化安装流程和性能调优技巧,帮助开发者快速搭建机器人开发环境,充分发挥树莓派4B在ROS2应用中的潜力。

w8x9y0z1的博客 963

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

CXF与jdk冲突问题

在客户端与spring继承,测试时 cxf与java的包冲突 信息: Creating Service {http://service.css.ty.com/}MyFirstServiceHelloWorld from class com.ty.css.service.HelloWorldService Exception in thread "main" java.lang.Linka...

mib_2012的博客 643

YOLO + SubspaceAD:一张良品图,检出所有未知缺陷

当YOLO遇上子空间建模,工业质检正迎来从“见多识广”到“举一反三”的质变时刻。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 494

使用commons-email-1.2发邮件的一点总结

今天用到commons-email-1.2.jar来发邮件 先导入commons-email-1.2.jar包,类如下: [code="java"] import org.apache.commons.mail.SimpleEmail; public class SendEmail { public static void main(String args[]) { ...

JAVA学习积累 403

ICC2(一)import design —— tluplus

itf转tluplus相关命令 TLUPlus是存储RC系数的二进制表格式。 TLUPlus模型通过包括宽度,空间,密度和温度对电阻系数的影响,可以估算RC计算net delay。 1.2 产生TLUplus的方法 Itf文件转TLUplus的命令: grdgenxo -itf2TLUPlus -i xx.itf-o xx.tlu+ itf: interconnect technology format file 含每层的厚度,面积等参数 itf同样可以转nxtgrd格式文...

m0_61544122的博客 5483

Python控制程控电源(USB)

随着智能电动汽车行业的持续发展,汽车电子或嵌入式设备在软硬件的测试中,都会使用程控电源供电,特别是自动化测试、压力测试场景必定使用到程控电源控制,控制电源上下电,监听电源电流、电压等,以下就以常见的艾德克斯程控电源为例,分享如何通过USB连接方式Python语言来控制程控电源。

测试领域技术分享 2865

Maven Jar冲突解决方案

MavenJar冲突解决方案记一次在做项目过程中 遇到的jar冲突问题 话不多说 先报出错异常 //异常在这 SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError. SLF4J: See also http://www.slf4j

千里之行始于足下 3530

QT-Creator安装教程(windows)

本文介绍了Qt的下载安装步骤:1)通过镜像源下载安装包;2)运行exe文件时使用命令行参数指定镜像地址;3)在安装过程中选择路径和自定义安装组件,包含QT5和QT6版本的详细安装说明;4)安装后可继续添加扩展包或卸载组件。重点提示了QT6必须勾选的关键组件,并提供了组件管理的操作方法。

qq_53545309的博客 3101

关于jar包冲突解决

使用jarjar-1.4.jar  重新打包 在jarjar-1.4.jar  相同目录下新建txt文件,文件名随意 里面内容   rule javax.xml.ws.handler.MessageContext* javax.xml.ws.handler.MessageContext1@1 意思是将jar包javax.xml.ws.handler.MessageContext这个类改名为j...

Koow的博客 641

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

解决Maven包依赖冲突导致IDEA中Maven报红色警告线(omitted for conflict with...)问题

情景再现: 今天工作时用IDEA从svn上down个项目,完成后点击重新导入所有maven项目后,maven报了红色警告线错误,如图: 最终的错误信息为:“omitted for conflict with 1.1”。大致意思是这个javax.activation:activation:1.02版本与1.1版本存在依赖冲突。 原因分析: 平时对maven不是特别了解,在一番搜索学习后,大...

一个不爱编程的程序猿 8万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JavaMail API概述及JAF简介

主要内容:  主要是对JavaMail API的基础介绍。 JavaMail API简介:     ①JavaMail API支持常用的SMTP、POP3、IMAP和MIME等协议。开发时,直接使用API类,无须考虑邮件协议的底层。     ②JavaMail API封装在mail.jar文件中,它是开发JavaMail的核心jar包。         mail.jar下载地址

青羽的博客 868

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java11:NoClassDefFoundError: javax/activation/MimetypesFileTypeMap

文章目录错误描述解决办法 错误描述 在 netty4.1实现http文件服务器 一文中我们有使用到javax.activation.MimetypesFileTypeMap。但是java9+对Java实行了模块化处理,有一些模块没有默认加载,所以在使用这些模块时,需要我们主动的引入。 错误信息:NoClassDefFoundError: javax/activation/MimetypesFile...

刘本龙的专栏 5092

邮件开发:Javamail、JAF简介

l要自己写程序发送和接收邮件,可以直接采用Socket编程连接上远程的邮件服务器,然后按照邮件协议与邮件服务器进行交互,涉及较多细节。 另外,要想自己编程创建出复杂的MIME格式的邮件,是一件非常困难和麻烦的事情。 lJavaMail是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如SMTP、POP3、IMAP。 l开

熊诗言的博客 1790

JAF框架及在JavaMail中的应用

1.JAF框架只要用于封装数据并为应用程序提供访问和操作数据的方法,下面介绍JAF框架的作用,JAF框架的内部工作原理,以及如何使用JAF框架快速创建供JavaMail程序使用的MIME消息。 2.JAF框架概述: JAF(JavaBeans Activation Framework ,JavaBens激活框架)的主要作用在于让Java应用程序知道如何对一个数据源进行查看,编辑和打印等操作,大

jiangtao7913的博客 4206

关于JavaMail包和J2EE包冲突导致无法发送邮件问题

在编写邮件发送相关程序时,会报错!   主要原因是    javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。  废话不多说下面是解决方法  进到 X

private_class的专栏 3055
上一篇: javamail,java发email,发邮件,jaf,activation,j2ee5冲突问题解决
下一篇: javamail,java发email,发邮件,jaf,activation,j2ee5冲突问题解决
JavaPromise
博客等级 码龄16年 3粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值