项目中有个需求是这样的:客户办理某一项业务,当用户成功提交业务办理信息后,系统生成一个业务随机码给用户,以此作为以后的业务办理结果查询依据。鉴于随机码较长,方便用户记录,在生成随机码的同时,提供用户发送随机码到用户指定邮箱的功能。所以这里有了发送邮件的需求。

java中邮件发送的jar包也不少,度娘了下,发现好多人使用commons-mail.jar来发送邮件,看代码觉得设置比较简洁,所以拿来试了一把。

整体来说,使用过程真的比较简洁,但是也出现了几个问题。现把问题记录在案,以便后续参考。

commons-mail使用的版本是commons-mail-1.3.1,以下是测试发送邮件的代码,

/**
         * 发送邮件
         * @param reciever 收信人地址
         * @param subject 邮件标题
         * @param content 邮件内容
         * @return 1 发送邮件成功 0 发送邮件失败
         */
        public static int sendMail(String reciever, String subject, String content) {
            try {
                SimpleEmail email = new SimpleEmail();
                email.setAuthentication(MAIL_USERNAME, MAIL_PASSWORD);
                email.setHostName(MAIL_HOSTNAME);
                email.setFrom(MAIL_SENDER);
                email.addTo(reciever);
                email.setSubject(subject);
                email.setContent(content, "text/plain;charset=utf-8");
                email.send();
                return 1;
            } catch (EmailException e) {
                System.out.println(e.getMessage());
                return 0;
            }
        }

我的工程是一个新建的java web工程, 引入了j2ee5的类库,然后第三方类库就是commons-mail-1-3-1.jar了。

错误信息1:这时候调用上面的邮件发送方法时,邮件发送失败,抛出的异常信息为:“Sending the email to the following server failed : smtp.163.com:25”,依旧度娘了下,告诉我说,缺少了mail.jar和activation.jar两个包。

错误信息2: 项目中添加了这两个jar包之后,怀着忐忑的心情,继续调用上述方法发送邮件,果然...,控制台直接报出了红色的信息,“Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream”,定神看了看,原来是有class未找到。这问题比较常见,度娘说,这个太小儿科了,好多人都问过这个问题了,刚刚引入的两个jar包在j2ee5类库里已经有了,但是实现有些差异,因此报出了刚刚的错误,言之有理,果断remove掉了j2ee5的类库,再次运行程序,发现邮件发送出去了,搞定。

附:其实如果j2ee类库选择j2ee6,mail.jar和activation.jar两个jar包,可以不再引入,依然能发送邮件。那么由此推测我添加的mail.jar和activation.jar两个jar包已经在j2ee6中有版本一致的一份,因此我最终的项目使用j2ee6。

关于使用commons-email包测试发送邮件遇到的问题的更多相关文章

  1. 使用Apache commons email发送邮件

    今天研究了以下怎么用java代码发送邮件,用的是Apache的commons-email包. 据说这个包是对javamail进行了封装,简化了操作. 这里讲一下具体用法吧 一.首先你需要有邮箱账号和一 ...

  2. 使用Commons Email发送邮件

    Commons Email是apache commons库中的一个组件,对java mail做了一些个封装,提供能为简化的API供开发者使用.它依赖于javax.mail . 首先下载commons- ...

  3. apache commons Java包简介

    更多信息,请参考:http://commons.apache.org/ 一.Commons BeanUtils说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanU ...

  4. Commons Email使用

    Apache Commons Email Apache的一个开源项目,是基于另一个开源项目Java Mail上进行封装的,使用起来更加简单方便: http://commons.apache.org/p ...

  5. 使用Python内置的smtplib包和email包来实现邮件的构造和发送。

    此文章github地址:https://github.com/GhostCNZ/Python_sendEmail Python_sendEmail 使用Python内置的smtplib包和email包 ...

  6. Fiddler抓包测试App接口

    Fiddler抓包测试App接口 使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理. 抓包过 ...

  7. apache commons io包基本功能

    1. http://jackyrong.iteye.com/blog/2153812 2. http://www.javacodegeeks.com/2014/10/apache-commons-io ...

  8. 使用Apache Commons Email 发生邮件

    Apache Commons Email的Maven依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-e ...

  9. apache commons lang包中的StringUtils

    计算一个字符串某个字符的出现次数 a, 使用charAt方法截取之后,循环判断. b, 使用apache commons lang包中的StringUtils: int n = StringUtils ...

随机推荐

  1. UVa 二分图匹配 Biginners

    UVa 1045 - The Great Wall Game 最小权匹配 题意:给你一个n*n的棋盘,上面有n个棋子,要求通过移动各个棋子使得棋子在同一行或者同一列或者对角线上,求最小移动次数. 思路 ...

  2. 【leetcode】Single Number II

    int singleNumber(int A[], int n) { int once = 0; int twice = 0; int three = 0; for (int i = 0; i < ...

  3. Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)

    作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒 ...

  4. wamp安装后打开默认网页显示dir,图标红点

    首先网页显示dir,是因为服务这些没启动,跟图标红点是一个原因,解决了图标红点,就能解决只显示dir的问题. 先测试是不是端口占用问题,如图: 如果是,那就继续往下走. 单击图标左键(记住是左键),然 ...

  5. log4net结构

    log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.其大致分为如下这些模块. Appenders模 ...

  6. 6.MIL采集和实时显示

    前面讲到的都是离线的图像获取方法,实际中我们做机器视觉都是在线采集图像和处理,处理结果决定了计算机要给出的控制信号如电机运动等,这样就实现了实时视觉反馈运动.MIL中的采集需要Matrox采集板卡的支 ...

  7. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  8. [置顶] 遇到难题(bug)的解决方法心得

    今天早上花了2个小时解决一个问题...界面抖动.. 最近把淄博项目的界面用BT改了,后来发现4个界面之间切换会抖动.. 就是整个界面会左右抖动... 文章出处: PHP攻城师 www.phpgcs.c ...

  9. C++中 auto自己主动变量,命名空间,using作用以及作用域

     1.autokeyword的用途 A:自己主动变量.能够自己主动获取类型,输出,类似泛型 B:自己主动变量,能够实现自己主动循环一维数组 C:自己主动循环的时候,相应的必须是常量 2.auto自 ...

  10. C#递归复制文件夹

    /// <param name="sources">原路徑</param> /// <param name="dest">目 ...