diff --git a/src/applications/metamta/controller/PhabricatorMetaMTAReceiveController.php b/src/applications/metamta/controller/PhabricatorMetaMTAReceiveController.php
index fde8a1d46..04a6e0122 100644
--- a/src/applications/metamta/controller/PhabricatorMetaMTAReceiveController.php
+++ b/src/applications/metamta/controller/PhabricatorMetaMTAReceiveController.php
@@ -1,88 +1,104 @@
 <?php
 
 final class PhabricatorMetaMTAReceiveController
   extends PhabricatorMetaMTAController {
 
   public function processRequest() {
 
     $request = $this->getRequest();
     $user = $request->getUser();
 
     if ($request->isFormPost()) {
-      $receiver = PhabricatorMetaMTAReceivedMail::loadReceiverObject(
-        $request->getStr('obj'));
-      if (!$receiver) {
-        throw new Exception(pht("No such task or revision!"));
+      $received = new PhabricatorMetaMTAReceivedMail();
+      $header_content = array();
+      $from = $request->getStr('sender');
+      $to = $request->getStr('receiver');
+      $uri = '/mail/received/';
+
+      if (!empty($from)) {
+        $header_content['from'] = $from;
       }
 
-      $hash = PhabricatorMetaMTAReceivedMail::computeMailHash(
+      if (preg_match('/.+@.+/', $to)) {
+        $header_content['to'] = $to;
+      } else {
+        $receiver = PhabricatorMetaMTAReceivedMail::loadReceiverObject($to);
+
+        if (!$receiver) {
+          throw new Exception(pht("No such task or revision!"));
+        }
+
+        $hash = PhabricatorMetaMTAReceivedMail::computeMailHash(
         $receiver->getMailKey(),
         $user->getPHID());
 
-      $received = new PhabricatorMetaMTAReceivedMail();
-      $received->setHeaders(
-        array(
-          'to' => $request->getStr('obj').'+'.$user->getID().'+'.$hash.'@',
-        ));
+        $header_content['to'] =
+          $to.'+'.$user->getID().'+'.$hash.'@';
+      }
+
+      $received->setHeaders($header_content);
       $received->setBodies(
         array(
           'text' => $request->getStr('body'),
         ));
 
       // Make up some unique value, since this column isn't nullable.
       $received->setMessageIDHash(
         PhabricatorHash::digestForIndex(
           Filesystem::readRandomBytes(12)));
 
       $received->save();
 
       $received->processReceivedMail();
 
-      $phid = $receiver->getPHID();
-      $handles = $this->loadViewerHandles(array($phid));
-      $uri = $handles[$phid]->getURI();
-
       return id(new AphrontRedirectResponse())->setURI($uri);
     }
 
     $form = new AphrontFormView();
     $form->setUser($request->getUser());
     $form->setAction($this->getApplicationURI('/receive/'));
     $form
       ->appendChild(hsprintf(
         '<p class="aphront-form-instructions">%s</p>',
-        pht('This form will simulate sending mail to an object.')))
+        pht(
+          'This form will simulate sending mail to an object '.
+          'or an email address.')))
+      ->appendChild(
+        id(new AphrontFormTextControl())
+          ->setLabel(pht('From'))
+          ->setName('sender'))
       ->appendChild(
         id(new AphrontFormTextControl())
           ->setLabel(pht('To'))
-          ->setName('obj')
+          ->setName('receiver')
           ->setCaption(pht(
             'e.g. %s or %s',
             phutil_tag('tt', array(), 'D1234'),
-            phutil_tag('tt', array(), 'T1234'))))
+            phutil_tag('tt', array(), 'bugs@example.com'))))
       ->appendChild(
         id(new AphrontFormTextAreaControl())
           ->setLabel(pht('Body'))
           ->setName('body'))
       ->appendChild(
         id(new AphrontFormSubmitControl())
           ->setValue(pht('Receive Mail')));
 
     $panel = new AphrontPanelView();
     $panel->setHeader(pht('Receive Email'));
     $panel->appendChild($form);
     $panel->setNoBackground();
 
     $nav = $this->buildSideNavView();
     $nav->selectFilter('receive');
     $nav->appendChild($panel);
 
     return $this->buildApplicationPage(
       $nav,
       array(
         'title' => pht('Receive Test'),
         'device' => true,
       ));
   }
 
 }
+