apache-commons-email是对mail的一个封装,所以使用起来确实是很方便。特别的,官网上的tutorial也是极其的简单。但是我也仍然是遇到了没有解决的问题。

jar包的添加

  • mail.jar && activation
  • apache-commons-email.jar

一开始我没有添加上面的mail.jar ,然后就导致在编码的过程中,各种报错。

SimpleEmail实例

  1. package email;
  2. import org.apache.commons.mail.DefaultAuthenticator;
  3. import org.apache.commons.mail.Email;
  4. import org.apache.commons.mail.SimpleEmail;
  5. import org.junit.Test;
  6. public class SimpleEmailTest {
  7. @Test
  8. public void simple() throws Exception {
  9. final String HOSTNAME = "smtp.163.com";
  10. try {
  11. Email email = new SimpleEmail();
  12. email.setHostName(HOSTNAME);
  13. // email.setSmtpPort(465);
  14. email.setAuthenticator(new DefaultAuthenticator("15640SSS27", "XXXXXXX"));
  15. email.setSSLOnConnect(true);
  16. email.setFrom("1SSSSSS27@163.com");
  17. email.setSubject("Test Mail By Commons-Emial");
  18. email.setMsg("Congratulations!\nYou have been admitted, so come here and join us ! :-)");
  19. email.addTo("106SSSSSS@qq.com");
  20. email.send();
  21. System.out.println("邮件已成功发送!");
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

带附件实例(图片和URL)

带图片的

  1. @Test
  2. public void test() throws Exception {
  3. // 添加一个附件
  4. EmailAttachment attachment = new EmailAttachment();
  5. attachment.setPath("E:\\Code\\Java\\apache-commons-email\\src\\email\\be.png");
  6. attachment.setDisposition(EmailAttachment.ATTACHMENT);
  7. attachment.setDescription("one big beauty!");
  8. attachment.setName("beauty.png");
  9. // 实例化邮件
  10. MultiPartEmail email = new MultiPartEmail();
  11. email.setHostName("smtp.163.com");
  12. email.setAuthenticator(new DefaultAuthenticator("15 xxxx27", "gxuxxxxxxx4"));
  13. email.setSSLOnConnect(true);
  14. email.addTo("dsds632@qq.com");
  15. email.setFrom("15dsdsds027@163.com");
  16. email.setSubject("The Beauty Picture!");
  17. email.setMsg("Here is an email with a beauty!");
  18. // 把附件添加到邮件
  19. email.attach(attachment);
  20. // 发邮件
  21. email.send();
  22. System.out.println("邮件发送成功!");
  23. }

带URL的

  1. @Test
  2. public void testURL() throws Exception {
  3. // 添加一个附件
  4. EmailAttachment attachment = new EmailAttachment();
  5. attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));
  6. attachment.setDisposition(EmailAttachment.ATTACHMENT);
  7. attachment.setDescription("Apache Logo!");
  8. attachment.setName("ApacheLogo");
  9. // 实例化邮件
  10. MultiPartEmail email = new MultiPartEmail();
  11. email.setHostName("smtp.163.com");
  12. email.setAuthenticator(new DefaultAuthenticator("15ssss7", "gssssss4"));
  13. email.setSSLOnConnect(true);
  14. email.addTo("10ssdsds@qq.com");
  15. email.setFrom("15dsdsdsdsds@163.com");
  16. email.setSubject("The Beauty Picture!");
  17. email.setMsg("Here is an email with a beauty!");
  18. // 把附件添加到邮件
  19. email.attach(attachment);
  20. // 发邮件
  21. email.send();
  22. System.out.println("邮件发送成功!");
  23. }

下面的是嵌入数据,但是却没能成功

  1. package email;
  2. import java.net.URL;
  3. import org.apache.commons.mail.DefaultAuthenticator;
  4. import org.apache.commons.mail.HtmlEmail;
  5. import org.junit.Test;
  6. public class WithHtmlTest {
  7. @Test
  8. public void sendHTMLFormattedEmail() throws Exception {
  9. try {
  10. // 实例化邮件
  11. HtmlEmail email = new HtmlEmail();
  12. email.setHostName("smtp.163.com");
  13. email.setAuthentication("1dsadsadsa27@163.com", "gdsadsaddsadsd");
  14. email.setSSLOnConnect(true);
  15. email.setSSL(true);
  16. email.addTo("1adas2@qq.com", "小郭");
  17. email.setFrom("156dsadas@163.com", "Me");
  18. email.setSubject("Test email with inline image");
  19. // embed the image and get the content id
  20. URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
  21. String cid = email.embed(url, "Apache Logo!");
  22. // 设置html的内容
  23. email.setHtmlMsg("<html>The apache logo - <img src=\"cid:" + cid + "\"></html>");
  24. // 设置text的内容
  25. email.setTextMsg("Your email client doesn't support HTML messages!");
  26. // 发邮件
  27. email.send();
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }

报错的信息如下:

  1. java.lang.NoSuchMethodError: javax.mail.internet.MimeBodyPart.setText(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
  2. at org.apache.commons.mail.HtmlEmail.build(HtmlEmail.java:586)
  3. at org.apache.commons.mail.HtmlEmail.buildMimeMessage(HtmlEmail.java:510)
  4. at org.apache.commons.mail.Email.send(Email.java:1447)
  5. at email.WithHtmlTest.sendHTMLFormattedEmail(WithHtmlTest.java:35)
  6. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  8. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  9. at java.lang.reflect.Method.invoke(Unknown Source)
  10. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  11. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  12. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  13. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  14. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
  15. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
  16. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
  17. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
  18. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
  19. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
  20. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
  21. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
  22. at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
  23. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
  24. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  25. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
  26. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
  27. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
  28. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

如果你也遇到了这个问题,而且解决了。欢迎留言!我会及时的来修改博客的!

Apache commons email 使用过程中遇到的问题的更多相关文章

  1. 使用Apache Commons Email 发生邮件

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

  2. 使用Apache commons email发送邮件

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

  3. Apache Commons Email 使用网易企业邮箱发送邮件

    最近使用HtmlEmail 发送邮件,使用网易企业邮箱,发送邮件,死活发不出去!原以为是网易企业邮箱,不支持发送邮箱,后面经过研究发现,是apache htmlEmail 的协议导致,apache E ...

  4. org.apache.commons.lang3.StringUtils类中isBlank和isEmpty方法的区别

    相信很多java程序员在写代码的时候遇到判断某字符串是否为空的时候会用到StringUtils类中isBlank和isEmpty方法,这两个方法到底有什么区别呢?我们用一段代码来阐述这个区别吧: @T ...

  5. 一篇关于apache commons类库的详解

    1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta C ...

  6. 一篇关于apache commons类库的详解[转]

    1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta C ...

  7. apache commons类库的学习

    原文地址http://www.tuicool.com/articles/iyEbquE 1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默 ...

  8. ysoserial分析【一】 之 Apache Commons Collections

    目录 前言 基础知识 Transformer 利用InvokerTransformer造成命令执行 Map TransformedMap LazyMap AnnotationInvocationHan ...

  9. apache commons io包基本功能

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

随机推荐

  1. 简明shell入门

  2. 【悬赏征文】确认过眼神,你就是腾讯WeTest的特约撰稿人

    成功的经验从来不是一蹴而就的,它仰仗基于价值认同的信息互通,知识共享. 在开发.测试领域"摸爬滚打"多年的你,一定有很多经验与见解分享. 如何让更多同行了解自己的独到见解? 怎样才 ...

  3. [HAOI 2007]上升序列

    Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ...

  4. 贼有意思[最长上升公共子序列](SAC大佬测试题)

    题目描述Awson 最近越来越蠢了,一天就只知道 zyys.他定义了一个 zyys 数列:这个数列满足:1.是另外两个数列 A,B 的公共子序列;2.数列单调递增.现在他有一个问题,我们假设知道两个长 ...

  5. 计蒜客NOIP模拟赛D2T3 数三角形

    刚刚上高中的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图 G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张图的多样性进行打分. ...

  6. django-rest-framework 注意事项

    注意事项: 在使用django rest framework时候由于网上资料太多,出现了 由一下两个函数导致的问题: from django.views.decorators.csrf import ...

  7. Linux下如何进入中文目录

    给Linux安装图形用户界面之后,会在工作目录中生成图片, 文档, 下载........等中文目录,以前不知道如何进入这些目录,感觉也没有必要,今天在火狐上下载了一个软件,默认在下载这个目录当中,实在 ...

  8. 如何使用 TeamViewer 配置QuickConnect按钮?

    QuickConnect作为TeamViewer中一个比较重要的部分,得到了很多用户的认可.那么在实际运用中,怎么才能设置网页或单个程序的QuickConnect呢?所以小编以此问题为例,教大家如何配 ...

  9. 网易互联网&网易游戏产品经理面试经验

    网易是分网易游戏和网易互联网的,本人都参加了校园招聘面试,最后均拿到了产品经理的offer. 网易是分网易游戏和网易互联网的,先说网易互联网吧,当时是去杭州总部进行面试,我觉得这是我面的最难的面试了. ...

  10. request.url 端口 错误

    今天遇到一个很奇怪的事情,用request.url.port来获取一个请求的端口,返回是80 ,很纳闷啊我的请求上面是http://www.XX.com:8088 啊,怎么会是80啊,太不可思议了! ...