{"record":{"id":"b3f71e9904cd37dd","repo":"phacility/phabricator","slug":"err-not-found-b3f71e","errorCode":"err:not-found","errorMessage":"This mail is addressed to an object (\"%s\"), but that object does not exist.","messagePattern":"This mail is addressed to an object \\(\"(.+?)\"\\), but that object does not exist\\.","errorType":"exception","errorClass":"PhabricatorMetaMTAReceivedMailProcessingException","httpStatus":null,"severity":"error","filePath":"src/applications/metamta/receiver/PhabricatorObjectMailReceiver.php","lineNumber":60,"sourceCode":"    }\n\n    $pattern = $parts['pattern'];\n    $sender = $this->getSender();\n\n    try {\n      $object = $this->loadObject($pattern, $sender);\n    } catch (PhabricatorPolicyException $policy_exception) {\n      throw new PhabricatorMetaMTAReceivedMailProcessingException(\n        MetaMTAReceivedMailStatus::STATUS_POLICY_PROBLEM,\n        pht(\n          'This mail is addressed to an object (\"%s\") you do not have '.\n          'permission to see: %s',\n          $pattern,\n          $policy_exception->getMessage()));\n    }\n\n    if (!$object) {\n      throw new PhabricatorMetaMTAReceivedMailProcessingException(\n        MetaMTAReceivedMailStatus::STATUS_NO_SUCH_OBJECT,\n        pht(\n          'This mail is addressed to an object (\"%s\"), but that object '.\n          'does not exist.',\n          $pattern));\n    }\n\n    $sender_identifier = $parts['sender'];\n    if ($sender_identifier === 'public') {\n      if (!PhabricatorEnv::getEnvConfig('metamta.public-replies')) {\n        throw new PhabricatorMetaMTAReceivedMailProcessingException(\n          MetaMTAReceivedMailStatus::STATUS_NO_PUBLIC_MAIL,\n          pht(\n            'This mail is addressed to the public email address of an object '.\n            '(\"%s\"), but public replies are not enabled on this server. An '.\n            'administrator may have recently disabled this setting, or you '.\n            'may have replied to an old message. Try replying to a more '.\n            'recent message instead.',","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/metamta/receiver/PhabricatorObjectMailReceiver.php#L42-L78","documentation":"The object identifier parsed from the target address was well-formed, but loadObject() returned nothing: no object with that pattern exists. The mail is rejected with STATUS_NO_SUCH_OBJECT ('err:not-found'). This is the mail-receiver analogue of a 404 — distinct from err:policy (object exists but is hidden).","triggerScenarios":"Replying to mail for an object that has since been deleted (task deleted, diff discarded); a mistyped or guessed object address (D99999 that was never created); replying to an ancient thread whose object no longer exists.","commonSituations":"Old mail threads resurrected after object deletion; addresses harvested from stale documentation or signatures; ID typos in manually composed addresses.","solutions":["Confirm the object exists by opening the same ID in the web UI (e.g. /T123).","Reply to a current notification so Phabricator regenerates a valid object address.","If the object was deleted, no configuration fixes it — start a new thread or recreate the object."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before generating an object reply address, confirm the object still exists:\n$object = id(new PhabricatorObjectQuery())\n  ->setViewer(PhabricatorUser::getOmnipotentUser())\n  ->withPHIDs(array($phid))\n  ->executeOne();\nif (!$object) {\n  // do not emit a reply-to address for a deleted object\n}","typeGuard":null,"tryCatchPattern":"try {\n  $receiver->processReceivedMail($mail, $target);\n} catch (PhabricatorMetaMTAReceivedMailProcessingException $ex) {\n  if ($ex->getStatusCode() === MetaMTAReceivedMailStatus::STATUS_NO_SUCH_OBJECT) {\n    // tell the sender the object no longer exists; do not retry\n  }\n}","preventionTips":["Distinguish err:not-found (object gone) from err:policy (object hidden) before debugging.","Regenerate reply addresses from current notifications rather than reusing old ones.","When deleting objects that have active mail threads, expect replies to start failing with this status."],"tags":["php","phabricator","mail","not-found","inbound-email"],"backgroundTag":"object-not-found","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}