使用 Java 发送电子邮件,我将如何在电子邮件地址旁边打印名称,最好采用这种样式?:
Joe A. Blow <joe.a.blow@host.org>
我在 *.properties 文件中有我的电子邮件列表,其中包含如下数据:
email_list_3 = Bob Smith<bob.smith@acme.com>,Jane Doe<jane.doe@acme.com, Betty Crocker<betty.crocker@acme.com
我正在使用此函数将属性文件中的每个电子邮件列表(例如“email_list_3”)作为数组列表返回:
private static ArrayList setEmailList(String email_list_name)throw Exception { Properties props = new Properties(); ArrayList email_list = new ArrayList();
try {
props.load(MailSender.class.getResourceAsStream("/email_lists.properties"));
email_list.addAll(Arrays.asList(props.getProperty(email_list_name).split(",")));
}// end try
catch (Exception e) {
logger.error("Failure populating email list: " + email_list_name + "\n",e);
}
return email_list;
}// 结束函数 setEmailLists()
接下来,我将收集电子邮件地址(我假设名称仍然在他们身边?)到这样的 InternetAddresses 数组中
ArrayList<String> recipientsArray = null;
ArrayList<InternetAddress> addressTo = new ArrayList<InternetAddress>();
recipientsArray = getAnArrayListOfEmailAddresses();
for (String tempAddress: recipientsArray) {
if (tempAddress != null) {
addressTo.add(new InternetAddress(tempAddress));
}
}
这就是我将我的地址插入电子邮件的方式:
InternetAddress[] to = new InternetAddress[addressTo.size()];
to = addressTo.toArray(to);
// processed in a for loop
tempAddress = (to[i]).getAddress();
MimeMessage msg = null;
msg = new MimeMessage(session);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromAddressStringl));
msg.setRecipients(Message.RecipientType.TO, tempAddress);
对我来说,现在,它看起来像是在电子邮件地址旁边显示的名称,我使用 InternetAddress 的另一个构造函数,它接受两个参数,地址和名称。
这是正确的还是有一个设置我可以更改,这样当Java从我的文件中解析名称+地址组合项时,它会自动执行它?
非常感谢提前
史蒂夫