使用Apache Commons Email阅读电子邮件内容

时间:2012-01-04 21:01:41

标签: java apache-commons

我有不同的属性文件,如下所示:

abc_en.properties
abc_ch.properties
abc_de.properties

所有这些都包含HTML标签&一些静态内容以及一些图片网址。

我想使用apache commons email& amp;我也可以使用locale通过Java组合模板的名称。

String name = abc_ch.properties;

现在,如何阅读它以使用Java将其作为Html Msg参数发送?

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

如何获取msg参数以从文件中获取内容?任何有效的&好solun?

任何人都可以提供示例java代码吗?

注意:属性文件包含用户名&的动态条目。像Dear这样的其他一些领域......我如何动态地替换它们?

由于

2 个答案:

答案 0 :(得分:0)

我认为* .properties是一个文本文件。

如果是,则将文件读入字符串

例如:

String name = getContents(new java.io.File(“/ path / 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();
  }

问候

答案 1 :(得分:0)

嗨,迈克,        嗯,我猜想你试图通过在运行时渲染来自不同属性文件的元素来发送多种语言的邮件。另外,你说“locale”。您使用的是“Resource Bundles)”的概念吗?是那么,在您发送邮件之前, 1)您需要了解命名属性文件的 命名约定 ,否则java编译器将无法在运行时加载相应的属性文件。 为此,请阅读Resource Bundles页面上的第一页 2)一旦您的命名约定正常,您可以加载适当的prop文件,如下所示:

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

3)Resource Bundle属性文件只是一个(Key,Value)对。因此,您可以检索键的值,如下所示:

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

4)稍后您可以使用此值在commons-email api中设置属性。

希望你觉得这很有用!