Use internal templates to simplify minor formatting commands.

Use internal templates in getChangeMessageThreadId, and to set
the listId headers.  These are not admin editable templates
(they are not in files), they simply make the code a bit more
readable and editable at very little cost since we already
support velocity templating in emails.  Additionaly, factor
out the fromline creation to its own function.

Change-Id: I197b239e657e1dd604b07510c4430675f05d84eb
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
index 664fb00..6e641a2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
@@ -137,23 +137,19 @@
     setCommitIdHeader();
   }
 
-  private void setListIdHeader() {
+  private void setListIdHeader() throws EmailException {
     // Set a reasonable list id so that filters can be used to sort messages
-    //
-    final StringBuilder listid = new StringBuilder();
-    listid.append("gerrit-");
-    listid.append(projectName.replace('/', '-'));
-    listid.append("@");
-    listid.append(getGerritHost());
-
-    final String listidStr = listid.toString();
-    setHeader("Mailing-List", "list " + listidStr);
-    setHeader("List-Id", "<" + listidStr.replace('@', '.') + ">");
+    setVHeader("Mailing-List", "list $email.listId");
+    setVHeader("List-Id", "<$email.listId.replace('@', '.')>");
     if (getSettingsUrl() != null) {
-      setHeader("List-Unsubscribe", "<" + getSettingsUrl() + ">");
+      setVHeader("List-Unsubscribe", "<$email.settingsUrl>");
     }
   }
 
+  public String getListId() throws EmailException {
+    return velocify("gerrit-$projectName.replace('/', '-')@$email.gerritHost");
+  }
+
   private void setChangeUrlHeader() {
     final String u = getChangeUrl();
     if (u != null) {
@@ -184,18 +180,9 @@
     return null;
   }
 
-  protected String getChangeMessageThreadId() {
-    final StringBuilder r = new StringBuilder();
-    r.append('<');
-    r.append("gerrit");
-    r.append('.');
-    r.append(change.getCreatedOn().getTime());
-    r.append('.');
-    r.append(change.getKey().get());
-    r.append('@');
-    r.append(getGerritHost());
-    r.append('>');
-    return r.toString();
+  public String getChangeMessageThreadId() throws EmailException {
+    return velocify("<gerrit.${change.createdOn.time}.$change.key.get()" +
+                    "@$email.gerritHost>");
   }
 
   /** Format the sender's "cover letter", {@link #getCoverLetter()}. */
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
index 44e1063..913e352 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
@@ -150,24 +150,30 @@
     body = new StringBuilder();
 
     if (fromId != null && args.fromAddressGenerator.isGenericAddress(fromId)) {
-      final Account account = args.accountCache.get(fromId).getAccount();
-      final String name = account.getFullName();
-      final String email = account.getPreferredEmail();
-
-      if ((name != null && !name.isEmpty())
-          || (email != null && !email.isEmpty())) {
-        body.append("From");
-        if (name != null && !name.isEmpty()) {
-          body.append(" ").append(name);
-        }
-        if (email != null && !email.isEmpty()) {
-          body.append(" <").append(email).append(">");
-        }
-        body.append(":\n\n");
-      }
+      appendText(getFromLine());
     }
   }
 
+  protected String getFromLine() {
+    final Account account = args.accountCache.get(fromId).getAccount();
+    final String name = account.getFullName();
+    final String email = account.getPreferredEmail();
+    StringBuilder f = new StringBuilder();
+
+    if ((name != null && !name.isEmpty())
+        || (email != null && !email.isEmpty())) {
+      f.append("From");
+      if (name != null && !name.isEmpty()) {
+        f.append(" ").append(name);
+      }
+      if (email != null && !email.isEmpty()) {
+        f.append(" <").append(email).append(">");
+      }
+      f.append(":\n\n");
+    }
+    return f.toString();
+  }
+
   public String getGerritHost() {
     if (getGerritUrl() != null) {
       try {