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

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。

最新文章

  1. Outlook2016 新装进阶操作指南
  2. 多线程爬取 threading.Thread 文件名支持gbk编码
  3. ScheduleThreadPoolExecutor的工作原理与使用示例
  4. 前端利器:SASS基础与Compass入门
  5. PreparedStatement的用法
  6. poj 3083 Children of the Candy Corn(DFS+BFS)
  7. hdu3534,个人认为很经典的树形dp
  8. CDC变更数据捕获
  9. 动态分析maillog日志,把恶意链接直接用防火墙禁止
  10. 你如何破解后安装PS cs6
  11. PDF修改器
  12. IDEA安装步骤详解
  13. know yourself
  14. golang ffmpeg 做网络直播
  15. java算法----排序----(3)冒泡排序
  16. js之获取url中"?"后面的字串
  17. ZZ ? ?: 回?做??的十年技?生涯(?文,非??慎入)
  18. Flowable BPMN 简单使用
  19. openvpn 上外网
  20. 详谈redis优化配置和redis.conf

热门文章

  1. cocos2d-x on wp8架构简单介绍
  2. 使用代码辅助生成工具CodeSmith -- 生成NHibernate的映射文件
  3. 在Windows下搭建C++11 编译环境(附下载,包括mingw-build,TDM-GCC, nuwen MinGW Distro)
  4. [Oracle]TRIGGER
  5. mysql双机热备的配置步骤
  6. 改动导航栏上返回button上的字,比如把back改动为返回
  7. FastReport的WCF托管到Windows服务的配置文件
  8. UVA 10160 Servicing Stations(深搜 + 剪枝)
  9. Servlet的学习之Request请求对象(3)
  10. 页面导出生成pdf,使用wkhtmltopdf第三方工具