javaMail多个收件人用分号隔开的适配问题
问题原因
问题原因不都概述,既然遇到这个问题肯定是因为接收到了习惯用分号间隔多个收件人的,但是呢,javamail默认是只识别逗号,所以就直接报错了。
解决方式
- 自定义InternetAddress ,很简单就是把系统的InternetAddress,所有内容都copy一份,类名换成自己定义的,比如:MyInternetAddress, 重点是里面的一个方法
private static MyInternetAddress[] parse(String s, boolean strict, boolean parseHdr) throws AddressException {}
- 将这个方法里面逗号判断的内容复制一份,替换掉分号判断的内容。这样以后分号了就会走这个逻辑,从而实现逗号和分号的适配。当然这个地方改动可能会有风险吧。因为分号这个也有特定的功能,所以我们应该尽可能小范围的使用这个自定义的类,减少异常情况的发生。接下来是重点。
- 我这里是用的是MineMessage 类来接受上送的邮件内容和解析处理的。具体内容就是将head内容做了一个解析和映射,在后面获取接收人地址的是时候,就是从这个head里面获取的。根据To,Cc等标识获取对应的值。这里就是我们要做的另一个改动点。需要我们手动改一下getHeaderAddress的方法,将我们自定义的MyInternetAddress传入进去即可
//name 就是类型, To&#