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 3448cd6..e7c463c 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
@@ -237,16 +237,6 @@
     return null;
   }
 
-  private String getSettingsUrl() {
-    if (getGerritUrl() != null) {
-      final StringBuilder r = new StringBuilder();
-      r.append(getGerritUrl());
-      r.append("settings");
-      return r.toString();
-    }
-    return null;
-  }
-
   protected String getChangeMessageThreadId() {
     final StringBuilder r = new StringBuilder();
     r.append('<');
@@ -328,13 +318,6 @@
     return r != null ? r.getOwners() : Collections.<AccountGroup.Id> emptySet();
   }
 
-  /** Schedule this message for delivery to the listed accounts. */
-  protected void add(final RecipientType rt, final Collection<Account.Id> list) {
-    for (final Account.Id id : list) {
-      add(rt, id);
-    }
-  }
-
   /** TO or CC all vested parties (change owner, patch set uploader, author). */
   protected void rcptToAuthors(final RecipientType rt) {
     add(rt, change.getOwner());
@@ -347,12 +330,6 @@
     }
   }
 
-  private void add(final RecipientType rt, final UserIdentity who) {
-    if (who != null && who.getAccount() != null) {
-      add(rt, who.getAccount());
-    }
-  }
-
   /** BCC any user who has starred this change. */
   protected void bccStarredBy() {
     try {
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 8f34d9e..fe66636 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
@@ -195,7 +195,7 @@
     return SystemReader.getInstance().getHostname();
   }
 
-  private String getSettingsUrl() {
+  public String getSettingsUrl() {
     if (getGerritUrl() != null) {
       final StringBuilder r = new StringBuilder();
       r.append(getGerritUrl());
@@ -291,7 +291,7 @@
     }
   }
 
-  private void add(final RecipientType rt, final UserIdentity who) {
+  protected void add(final RecipientType rt, final UserIdentity who) {
     if (who != null && who.getAccount() != null) {
       add(rt, who.getAccount());
     }
