diff --git a/src/applications/differential/storage/DifferentialTransaction.php b/src/applications/differential/storage/DifferentialTransaction.php --- a/src/applications/differential/storage/DifferentialTransaction.php +++ b/src/applications/differential/storage/DifferentialTransaction.php @@ -81,7 +81,7 @@ return ($this !== head($xactions)); } - return $this->shouldHide(); + return parent::shouldHideForMail($xactions); } public function getBodyForMail() { diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php --- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php +++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php @@ -1721,6 +1721,21 @@ PhabricatorLiskDAO $object, array $xactions) { + // Check if any of the transactions are visible. If we don't have any + // visible transactions, don't send the mail. + + $any_visible = false; + foreach ($xactions as $xaction) { + if (!$xaction->shouldHideForMail($xactions)) { + $any_visible = true; + break; + } + } + + if (!$any_visible) { + return; + } + $email_to = array_filter(array_unique($this->getMailTo($object))); $email_cc = array_filter(array_unique($this->getMailCC($object)));