Java发邮件出现java.lang.ArrayStoreException

原创 2013年12月04日 14:43:26

今天学习基于javamail的commons-mail,编写一个发送邮件的类:

1. 从配置文件读取邮件服务器地址、用户名和密码,以初始化邮件

2. 从配置文件读取待发送邮件信息,之后发送


由于需要批量获取收件人、抄送、密送,因此采用HtmlEmail的setTo等方法:


..
List tos = new ArrayList();
Properties props = getProperties(PATH);
String toStr = props.getProperty(TO);
String[] toStrs = toStr.split(",");
tos = Arrays.asList(toStrs);
email.setTo(tos);
...
email.buildMimeMessage();
...



执行异常: java.lang.ArrayStoreException

找了很久也不知道怎么回事,后来看了commons mail的源码:buildMimeMessage()最终会调用如下代码来设置信箱地址


protected InternetAddress[] toInternetAddressArray(List<InternetAddress> list)
    {
        return list.toArray(new InternetAddress[list.size()]);
    }

问题应该就处在这个toArray上。

该函数传入的参数是InternetAddress类型,而我之前的设定是List,没有指定元素类型,因此判断是类型转换的问题。

将List tos = new ArrayList()

改成List<InternetAddress> tos = new ArrayList<InternetAddress>();

问题解决。

我也得到了一个教训,创建集合时尽量指定类型,另外,eclipse提示的warning千万别忽视!

1分钟学会用java发送邮件

今天教大家如何通过java发送邮件,十分的简单易懂,而且能够马上上手。 首先,教大家的方法底层依赖的是javamail,需要的jar包是mail.jar、activation.jar。jar包我会放在...
  • qq619771478
  • qq619771478
  • 2015年10月28日 09:08
  • 1862

java开发过程中所有会出现的异常与解决的办法

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:Negativ...
  • founder_chenhao
  • founder_chenhao
  • 2015年12月04日 10:56
  • 3522

java常见异常和代码演示

1、 Java.lang.NullPointerException(空指针异常)       调用了未经初始化的对象或者是不存在的对象public class Test { @Su...
  • renyajie2345
  • renyajie2345
  • 2017年05月23日 11:35
  • 319

Java 线程池 发送邮件

想了解下Java线程池的用法,恰好最近要做一个简易的邮件通知中间功能,所以写下这个笔记。见笑。 servlet代码SendEmailServlet.java: package servlet; ...
  • Mchange
  • Mchange
  • 2014年04月02日 15:49
  • 1590

【javaMail】【3.多线程发邮件】java mail 多线程发送邮件

背景 多线程发送邮件 最近在做一个功能,需要批量或不定时散量发送邮件给不同的人。比方说注册功能,需要给注册人发送邮件,如果遇上系统新开放注册,有一定量的并发,如果一窝蜂地发,有可能造成smtp服务器拒...
  • ku360517703
  • ku360517703
  • 2016年01月12日 17:08
  • 3238

JAVA 使用QQ发送邮件

一、开通QQ邮箱服务    因为这里只是使用了邮箱的发邮件功能,所以我只要开通他的smtp功能就可以了 开启流程如下: (1)进入到QQ邮箱页面,并登录进去 (2)点击左上角的“设置”,将会出...
  • binlixia
  • binlixia
  • 2016年10月09日 16:54
  • 1543

javaEE之----------java代码发送邮件

E-Mail邮件简介: 利用java代码发邮件可以实现用户注册的严格性,用户不会随意的进行注册了,邮箱注册才可以注册成功,还有可以向用户推销自己的产品通过发邮件,当然也可以找回密码等 邮件...
  • xyw591238
  • xyw591238
  • 2017年03月02日 22:13
  • 365

利用spring定时器发送定时邮件

spring 的org.springframework.mail包提供的对邮件的支持。 1.封装一个方法用于发送邮件的方法: /** isValate:是否校验(或者授权):true to:邮件...
  • hyf_javatest
  • hyf_javatest
  • 2015年10月16日 16:56
  • 3410

java通过qq邮箱发送邮件

闲来无事,想了解一下java怎么发送邮件,然后百度了一下,看看别人的样例,自己整合了一套代码。 jar包的话只需要下一个:mail.jar;从百度云盘下载: https://pan.baidu.com...
  • miaoch
  • miaoch
  • 2016年11月15日 16:26
  • 1249

java免费发送邮件实现

现在项目上线一段时间了,希望能够在项目中出现异常后邮件通知给相关开发人员。我从网上找了大量的第三方接口(需要花钱)和发送邮件demo。最后选择了一个只需要引入一个jar包和一个工具类的实现,不需要配置...
  • zl544434558
  • zl544434558
  • 2016年01月07日 16:15
  • 1965
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java发邮件出现java.lang.ArrayStoreException
举报原因:
原因补充:

(最多只允许输入30个字)