关闭

Java发邮件出现java.lang.ArrayStoreException

标签: 邮件java异常类型转换
914人阅读 评论(0) 收藏 举报
分类:

今天学习基于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千万别忽视!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20669次
    • 积分:7
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:1篇
    • 评论:6条
    文章分类
    最新评论