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. }   
银行数据仓库体系实践(3)--数据架构 狭义的数据仓库数据架构用来特指数据分布,广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据,也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。 数据架构层面通过数据分类、分层部署等手段,从非功能性视角将数据合理布局。通过整体架构管控和设计,支持业务操作类和管理分析类应用(系统),满足业... 阅读详情

相关推荐

AIOps智能运维:从数据治理到故障自愈的实践指南

AIOps(智能运维)通过融合人工智能与运维管理,构建了感知-决策-执行的闭环体系。其核心技术包括多维度数据采集、机器学习算法和自动化执行,显著提升了告警治理、故障定位和容量预测的效率。在数据层,全量性、实时性的数据采集是基础,而算法层的异常检测和根因分析则依赖统计方法、孤立森林和LSTM等模型。AIOps尤其适用于处理告警风暴和复杂系统故障,如在电商大促中通过K-Means聚类减少92%的告警量。随着云原生和边缘计算的普及,AIOps正逐步实现与Service Mesh、Serverless等技术的深度集

weixin_30175731的博客 288

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

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

解决jQuery和其他库的冲突

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

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

电力抄表协议DL/T645和698.45到底有啥区别?一张图帮你选对协议

本文深入对比了电力抄表协议DL/T645和DL/T698.45的技术差异,从协议架构、报文结构、功能覆盖到实施成本进行全面分析。通过实际案例和数据,揭示698.45协议在通信效率、业务扩展性和长期成本上的优势,并提供清晰的选型决策流程图,帮助工程师根据具体需求选择最适合的电力抄表协议。

weixin_38168696的博客 401

Node.js内存溢出?一招搞定JavaScript heap out of memory错误(附永久配置方案)

本文深入解析Node.js内存溢出问题,提供从临时调整到永久配置的完整解决方案。重点介绍通过设置`max-old-space-size`参数和`NODE_OPTIONS`环境变量来扩展JavaScript堆内存限制,适用于Webpack、Vite等构建工具的大型项目场景,并涵盖Windows、Linux/macOS多平台配置方法。

cake8的博客 1053

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

ROS2机械臂MPC轨迹规划实战:从MoveIt 2插件配置到参数调优全流程

本文详细介绍了ROS2机械臂MPC轨迹规划的全流程,从MoveIt 2插件配置到参数调优。通过模型预测控制(MPC)技术,实现高精度运动控制,特别适合复杂装配任务。文章包含环境搭建、插件部署、参数设计及实战调优方法,帮助开发者快速掌握ROS2机械臂的MPC轨迹规划技术。

i0j1k2l3m的博客 206

使用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

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7661

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

关于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

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1061

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

解决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万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaMail API概述及JAF简介

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

青羽的博客 868

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JAF框架及在JavaMail中的应用

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

jiangtao7913的博客 4206

java11:NoClassDefFoundError: javax/activation/MimetypesFileTypeMap

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

刘本龙的专栏 5092

xfire与cxf冲突包解决方案【发布时异常注意】

xfire 与 cxf冲突现象解决方案 【项目发布中遇到的异常情况】 Unable to create schema compiler   项目发布环境使用的是tomcat7 冲突说明项目发布在调用cxf动态客户端的时候出现没有找到编译器情况(Unable to create schema compiler) 就是系统运行时无法找到,tools.jar 工具类中的编译器的方法导致无法编译动态生成客户端的情况。

zqd32的专栏 2747
上一篇: JS学习教程
下一篇: 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、付费专栏及课程。

余额充值