2012-08-24 104 views
0

使用Java發送一封電子郵件,我怎麼會得到名稱旁邊打印到的電子郵件地址,最好是在這種風格?:Java電子郵件:獲取名稱打印旁邊的電子郵件地址

Joe A. Blow <[email protected]> 

我有我的電子郵件列表中的*的.properties文件,像這樣的數據:

email_list_3 = Bob Smith<[email protected]>,Jane Doe<[email protected], Betty Crocker<[email protected] 

我使用這個函數返回的性能每封電子郵件列表文件,如「email_list_3」,作爲一個數組列表:

私有靜態ArrayList setEmailList(String email_list_name)拋出異常{ 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()

接下來,我將收集的電子郵件地址(IM假設的名字仍然與他們?)到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解析名稱+地址組合項目從我的文件會做自動的設置?

感謝很多提前

史蒂夫

回答

2

你正在做這個太複雜了。

你有一堆網際地址的對象,只是使用它們直接設置收件人:

InternetAddress[] to = new InternetAddress[addressTo.size()]; 
to     = addressTo.toArray(to); 

MimeMessage msg = new MimeMessage(session); 
msg.setSubject(subject); 
msg.setFrom(new InternetAddress(fromAddressStringl)); 
msg.setRecipients(Message.RecipientType.TO, to); 

這是你用於分隔個人名字段地址字段的getAddress()的使用;不要這樣做。

此外,您還可以使用InternetAddress.parse()方法爲您的屬性解析爲一個InternetAddress對象的數組,而不是逗號分割自己。

相關問題