2012-01-04 23 views
0

閱讀電子郵件內容,我有不同的屬性文件,如下所示:使用Apache通用電子郵件

abc_en.properties 
abc_ch.properties 
abc_de.properties 

所有這些包含HTML標籤&一些圖像的URL以及一些靜態內容。

我想使用apache commons email發送電子郵件&我能夠使用語言環境通過Java編寫模板的名稱。

字符串名稱= abc_ch.properties;

現在,我怎麼看它送它爲使用Java的HTML消息參數?

HtmlEmail e = new HtmlEmail(); 
e.setHostName("my.mail.com"); 
... 
e.setHtmlMsg(msg);  

如何獲取msg參數以從文件中獲取內容?任何有效的&很好的解決?

任何一個可以提供樣品Java代碼?

注:該屬性文件具有動態條目的用戶名&其他一些領域,如親愛的,......我如何替代這些動態?

感謝

回答

0

我假設的* .properties是一個文本文件。

如果是這樣,然後做讀入的字符串的文件

如:

字符串名稱= getContents(新的java.io.File( 「/路徑/ file.properties」);

public static String getContents(File aFile) { 
    StringBuffer contents = new StringBuffer(); 
    BufferedReader input = null; 
    try { 
     InputStreamReader fr=new InputStreamReader(new FileInputStream(aFile), "UTF8"); 
     input = new BufferedReader(fr); 
     String line = null; 
     while ((line = input.readLine()) != null){ 
     contents.append(line); 
     contents.append(System.getProperty("line.separator")); 
     } 
    } 
    catch (FileNotFoundException ex) { 
     //ex.printStackTrace(); 
    } 
    catch (IOException ex){ 
     //ex.printStackTrace(); 
    } 
    finally { 
     try { 
     if (input!= null) { 
      input.close(); 
     } 
     } 
     catch (IOException ex) { 
     //ex.printStackTrace(); 
     } 
    } 
    return contents.toString(); 
    } 

問候

+0

我需要從屬性文件(如用戶名)讀取一些動態數據。親愛的,....我如何閱讀內容並替換那些細節? – Mike 2012-01-04 22:39:00

0

嗨麥克,
嗯,我有點想你正試圖送通過在運行時渲染來自不同屬性文件的元素,以多種語言結束郵件。另外,你說「locale」。你是否在使用「Resource Bundles」)的概念?
那麼,在這種情況下,之前你發郵件,
1)你需要了解命名約定命名屬性文件,沒有它,Java編譯器將無法加載相應的屬性文件在運行。 對於這種閱讀Resource Bundles頁的第一頁。
2)一旦你的命名約定是好的,你可以加載相應的道具文件是這樣的:

Locale yourLocale = new Locale("en", "US"); 
ResourceBundle rb = ResourceBundle.getBundle("resourceBundleFileName", yourLocale); 

3)資源包屬性文件不過是一個(鍵,值)對。因此,你可以檢索鍵的值是這樣的:

String dearString = rb.getString("Dear"); 
String emailBody= rb.getString("emailBody"); 

4)以後,您可以使用此值在公共電子郵件API設置的屬性。

希望對您有所幫助!

相關問題