diff --git a/www/roster/views/actions/memstat.json.rb b/www/roster/views/actions/memstat.json.rb
index f28c8df..370c524 100644
--- a/www/roster/views/actions/memstat.json.rb
+++ b/www/roster/views/actions/memstat.json.rb
@@ -28,7 +28,6 @@
       index = text.index(/^\s\*\)\s/, text.index(/^Emeritus/))
       entry.sub! %r{\s*/\* deceased, .+?\*/},'' # drop the deceased comment if necessary
       # if pending emeritus request was found, move it to emeritus
-      # If emeritus request was found, move it to emeritus
       filename = ASF::EmeritusRequestFiles.extractfilename(@emeritusfileurl)
       if filename
         extra << ['mv', @emeritusfileurl, ASF::SVN.svnpath!('emeritus', filename)]
@@ -59,7 +58,7 @@
   # TODO handle case where rescinded file already exists
   ASF::SVN.svn_!('mv', [@emeritusfileurl, ASF::SVN.svnurl('emeritus-requests-rescinded')], _, {env:env, msg:message})
 elsif @action == 'request_emeritus'
-  # Create mail to secretary requesting emeritus
+  # Create emeritus request and send acknowlegement mail from secretary
   template, err =
     ASF::SVN.svn('cat', ASF::SVN.svnpath!('foundation', 'emeritus-request.txt').untaint, {env:env})
   raise RuntimeError.new("Failed to read emeritus-request.txt: " + err) unless template
@@ -74,20 +73,26 @@
     .gsub('Signed: __________________________________________________________',
           'Signed by validated user at: ________Whimsy www/committer_________')
     .gsub('Date: _________________________________',
-          ('Date: _______' + centered_date))
-
-  ASF::Mail.configure
-  mail = Mail.new do
-    to "secretary@apache.org"
-    cc "#{USERNAME}<#{USERMAIL}>"
-    from "#{USERMAIL}"
-    subject "Emeritus request from #{USERNAME}"
-    text_part do
-      body "Please accept my emeritus request, which is attached.\n\nRegards,\n\n#{USERNAME}\n\n"
+          ('Date: _______' + centered_date)).untaint
+  # Write the emeritus request to emeritus-requests-received
+  EMERITUS_REQUEST_URL = ASF::SVN.svnpath!('emeritus-requests-received').untaint
+  Dir.mktmpdir do |tmpdir|
+    filename =File.join(tmpdir,'tmpfile')
+    File.write(filename, signed_request)
+    if 0 == ASF::SVN.create_(EMERITUS_REQUEST_URL, "#{USERID}.txt", filename, "Emeritus request from #{USERNAME} (#{USERID})", env, _)
+      ASF::Mail.configure
+      mail = Mail.new do
+        from "secretary@apache.org"
+        to "#{USERNAME}<#{USERMAIL}>"
+        subject "Acknowledgement of emeritus request from #{USERNAME}"
+        text_part do
+          body "This acknowledges receipt of your emeritus request. You can find the request at #{EMERITUS_REQUEST_URL}#{USERID}.txt. A copy is attached for your records.\n\nWarm Regards,\n\nSecretary, Apache Software Foundation\nsecretary@apache.org\n\n"
+        end
+      end
+      mail.attachments["#{USERID}.txt"] = signed_request
+      mail.deliver!
     end
   end
-  mail.attachments["#{USERID}.txt"] = signed_request.untaint
-  mail.deliver!
 elsif @action == 'request_reinstatement'
   ASF::Mail.configure
   mail = Mail.new do
@@ -96,7 +101,7 @@
     from "#{USERMAIL}"
     subject "Emeritus reinstatement request from #{USERNAME}"
     text_part do
-      body "I respectfully request reinstatement to full membership.\n\nRegards,\n\n#{USERNAME}"
+      body "I respectfully request reinstatement to full membership in The Apache Software Foundation.\n\nRegards,\n\n#{USERNAME}"
     end
   end
   mail.deliver!
