【问题标题】:Read email contents using Apache Commons Email使用 Apache Commons Email 阅读电子邮件内容
【发布时间】:2012-01-04 21:01:40
【问题描述】:

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

abc_en.properties
abc_ch.properties
abc_de.properties

所有这些都包含 HTML 标记和一些静态内容以及一些图像 url。

我想使用 apache commons email 发送电子邮件,我也可以使用语言环境通过 Java 编写模板的名称。

字符串名称 = abc_ch.properties;

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

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

如何获取 msg 参数以从文件中获取内容?有什么高效又好看的解决方案吗?

谁能提供示例java代码?

注意:属性文件包含用户名和其他一些字段的动态条目,例如 Dear ,.....如何动态替换它们?

谢谢

【问题讨论】:

    标签: java apache-commons


    【解决方案1】:

    我会假设 *.properties 是一个文本文件。

    如果是这样,那么做一个文件读入一个字符串

    例如:

    字符串名称 = 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();
      }
    

    问候

    【讨论】:

    • 我需要从属性文件中读取一些动态数据,例如用户名。亲爱的 , ....如何阅读内容并替换这些详细信息?
    【解决方案2】:

    嗨,迈克,
    好吧,我猜您正试图通过在运行时呈现来自不同属性文件的元素来以多种语言发送邮件。另外,您说的是“语言环境”。您是否使用“Resource Bundles)”的概念?
    那么,在这种情况下,在您发送邮件之前,
    1)您需要了解命名属性文件的命名约定,否则 java 编译器将无法在运行时加载适当的属性文件。 为此,请阅读Resource Bundles 页面的第一页。
    2)一旦你的命名约定是好的,你可以像这样加载适当的道具文件:

    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 中设置属性。

    希望你觉得这很有用!

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 2015-07-08
      • 1970-01-01
      • 2013-02-10
      • 2010-10-25
      • 2011-09-17
      相关资源
      最近更新 更多