diff --git a/src/applications/metamta/adapter/PhabricatorMailTestAdapter.php b/src/applications/metamta/adapter/PhabricatorMailTestAdapter.php index f0840ba7bf..a6258a8874 100644 --- a/src/applications/metamta/adapter/PhabricatorMailTestAdapter.php +++ b/src/applications/metamta/adapter/PhabricatorMailTestAdapter.php @@ -1,141 +1,161 @@ supportsMessageID = $support; return $this; } public function setFailPermanently($fail) { $this->failPermanently = true; return $this; } public function setFailTemporarily($fail) { $this->failTemporarily = true; return $this; } public function getSupportedMessageTypes() { return array( PhabricatorMailEmailMessage::MESSAGETYPE, + PhabricatorMailSMSMessage::MESSAGETYPE, ); } protected function validateOptions(array $options) { PhutilTypeSpec::checkMap($options, array()); } public function newDefaultOptions() { return array(); } public function supportsMessageIDHeader() { return $this->supportsMessageID; } public function getGuts() { return $this->guts; } public function sendMessage(PhabricatorMailExternalMessage $message) { if ($this->failPermanently) { throw new PhabricatorMetaMTAPermanentFailureException( pht('Unit Test (Permanent)')); } if ($this->failTemporarily) { throw new Exception( pht('Unit Test (Temporary)')); } + switch ($message->getMessageType()) { + case PhabricatorMailEmailMessage::MESSAGETYPE: + $guts = $this->newEmailGuts($message); + break; + case PhabricatorMailSMSMessage::MESSAGETYPE: + $guts = $this->newSMSGuts($message); + break; + } + + $guts['did-send'] = true; + $this->guts = $guts; + } + + public function getBody() { + return idx($this->guts, 'body'); + } + + public function getHTMLBody() { + return idx($this->guts, 'html-body'); + } + + private function newEmailGuts(PhabricatorMailExternalMessage $message) { $guts = array(); $from = $message->getFromAddress(); $guts['from'] = (string)$from; $reply_to = $message->getReplyToAddress(); if ($reply_to) { $guts['reply-to'] = (string)$reply_to; } $to_addresses = $message->getToAddresses(); $to = array(); foreach ($to_addresses as $address) { $to[] = (string)$address; } $guts['tos'] = $to; $cc_addresses = $message->getCCAddresses(); $cc = array(); foreach ($cc_addresses as $address) { $cc[] = (string)$address; } $guts['ccs'] = $cc; $subject = $message->getSubject(); if (strlen($subject)) { $guts['subject'] = $subject; } $headers = $message->getHeaders(); $header_list = array(); foreach ($headers as $header) { $header_list[] = array( $header->getName(), $header->getValue(), ); } $guts['headers'] = $header_list; $text_body = $message->getTextBody(); if (strlen($text_body)) { $guts['body'] = $text_body; } $html_body = $message->getHTMLBody(); if (strlen($html_body)) { $guts['html-body'] = $html_body; } $attachments = $message->getAttachments(); $file_list = array(); foreach ($attachments as $attachment) { $file_list[] = array( 'data' => $attachment->getData(), 'filename' => $attachment->getFilename(), 'mimetype' => $attachment->getMimeType(), ); } $guts['attachments'] = $file_list; - $guts['did-send'] = true; - - $this->guts = $guts; + return $guts; } + private function newSMSGuts(PhabricatorMailExternalMessage $message) { + $guts = array(); - public function getBody() { - return idx($this->guts, 'body'); - } + $guts['to'] = $message->getToNumber(); + $guts['body'] = $message->getTextBody(); - public function getHTMLBody() { - return idx($this->guts, 'html-body'); + return $guts; } - }