关于使用commons-email包测试发送邮件遇到的问题
项目中有个需求是这样的:客户办理某一项业务,当用户成功提交业务办理信息后,系统生成一个业务随机码给用户,以此作为以后的业务办理结果查询依据。鉴于随机码较长,方便用户记录,在生成随机码的同时,提供用户发送随机码到用户指定邮箱的功能。所以这里有了发送邮件的需求。
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包测试发送邮件遇到的问题的更多相关文章
- 使用Apache commons email发送邮件
今天研究了以下怎么用java代码发送邮件,用的是Apache的commons-email包. 据说这个包是对javamail进行了封装,简化了操作. 这里讲一下具体用法吧 一.首先你需要有邮箱账号和一 ...
- 使用Commons Email发送邮件
Commons Email是apache commons库中的一个组件,对java mail做了一些个封装,提供能为简化的API供开发者使用.它依赖于javax.mail . 首先下载commons- ...
- apache commons Java包简介
更多信息,请参考:http://commons.apache.org/ 一.Commons BeanUtils说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanU ...
- Commons Email使用
Apache Commons Email Apache的一个开源项目,是基于另一个开源项目Java Mail上进行封装的,使用起来更加简单方便: http://commons.apache.org/p ...
- 使用Python内置的smtplib包和email包来实现邮件的构造和发送。
此文章github地址:https://github.com/GhostCNZ/Python_sendEmail Python_sendEmail 使用Python内置的smtplib包和email包 ...
- Fiddler抓包测试App接口
Fiddler抓包测试App接口 使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理. 抓包过 ...
- apache commons io包基本功能
1. http://jackyrong.iteye.com/blog/2153812 2. http://www.javacodegeeks.com/2014/10/apache-commons-io ...
- 使用Apache Commons Email 发生邮件
Apache Commons Email的Maven依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-e ...
- apache commons lang包中的StringUtils
计算一个字符串某个字符的出现次数 a, 使用charAt方法截取之后,循环判断. b, 使用apache commons lang包中的StringUtils: int n = StringUtils ...
随机推荐
- 每天4个linux命令--步骤一
1 :Linux的诞生 Linux由芬兰赫尔辛基大学的Linus Torvalds创建 1991年10月,Linux第一个公开版 0.02版发布 1994年3月,Linux 1.0版发布 Linus ...
- 程序集的内部结构(托管模块、元素局、IL代码的分布情况)
程序集的内部结构 在看程序集的结构之前,我们先来看托管模块的结构. 托管模块由四部分组成:PE32头.CLR头.元数据(Metadata).IL代码.其中PE32头是用来决定托管模块运行的系统环境(3 ...
- C#对数字添加逗号,千分位
/// <summary> /// 对数字添加”,“号,可以处理负数以及带有小数的情况 /// </summary> /// <param name="vers ...
- 解决java mail发送TXT附件被直接显示在正文中的问题
这两天遇到一个问题,关于使用java mail发送邮件的问题. 详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀 ...
- xcode-build/version-bump
# xcode-build-bump.sh # @desc Auto-increment the build number every time the project is run. # @usag ...
- Qt MinGW 使用联合编译IncrediBuild
联合编译工具IncrediBuild提供了接口,以使得可以使用网格来处理各种任务,而不仅仅是VS的联合编译,文档地址:http://www.incredibuild.com/webhelp/xge_h ...
- Winfrom设置DataGridView单元格获得焦点(DataGridView - CurrentCell)
设置DataGridView单元格获得焦点 this.dgv_prescription.BeginEdit(true);
- SRM 582 Div II Level Three: ColorTheCells, Brute Force 算法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12581 Burte Force 算法,求解了所有了情况,注意 ...
- 获取TBitMap图像缓冲区,提高图像处理速度
使用Dephi进行图像处理可以有多种方法,最常用的应该算是TBitmap,它提供方便的图像存取能力,结合Canvas可进行画线.画圆.图像拷贝等操作.不过在进行大量的图像处理操作时,为了获得更高的速度 ...
- 了解sota字符界面(章节4.1)
4 SOTA操作 4.1 SOTA字符界面 sotaCC是字符界面管理sota系统程序 . 在/.../sota/bin/目录下,启动sotaCC.在终端的该目录下输入指令“./sotaCC”,启动s ...