2013-05-20 19:13:42 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
final class PhabricatorMailManagementShowInboundWorkflow
|
2013-12-27 22:15:48 +01:00
|
|
|
extends PhabricatorMailManagementWorkflow {
|
2013-05-20 19:13:42 +02:00
|
|
|
|
|
|
|
protected function didConstruct() {
|
|
|
|
$this
|
|
|
|
->setName('show-inbound')
|
|
|
|
->setSynopsis('Show diagnostic details about inbound mail.')
|
|
|
|
->setExamples(
|
|
|
|
"**show-inbound** --id 1 --id 2")
|
|
|
|
->setArguments(
|
|
|
|
array(
|
|
|
|
array(
|
|
|
|
'name' => 'id',
|
|
|
|
'param' => 'id',
|
|
|
|
'help' => 'Show details about inbound mail with given ID.',
|
|
|
|
'repeat' => true,
|
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function execute(PhutilArgumentParser $args) {
|
|
|
|
$console = PhutilConsole::getConsole();
|
|
|
|
|
|
|
|
$ids = $args->getArg('id');
|
|
|
|
if (!$ids) {
|
|
|
|
throw new PhutilArgumentUsageException(
|
|
|
|
"Use the '--id' flag to specify one or more messages to show.");
|
|
|
|
}
|
|
|
|
|
|
|
|
$messages = id(new PhabricatorMetaMTAReceivedMail())->loadAllWhere(
|
|
|
|
'id IN (%Ld)',
|
|
|
|
$ids);
|
|
|
|
|
|
|
|
if ($ids) {
|
|
|
|
$ids = array_fuse($ids);
|
|
|
|
$missing = array_diff_key($ids, $messages);
|
|
|
|
if ($missing) {
|
|
|
|
throw new PhutilArgumentUsageException(
|
|
|
|
"Some specified messages do not exist: ".
|
|
|
|
implode(', ', array_keys($missing)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$last_key = last_key($messages);
|
|
|
|
foreach ($messages as $message_key => $message) {
|
|
|
|
$info = array();
|
|
|
|
|
|
|
|
$info[] = pht('PROPERTIES');
|
|
|
|
$info[] = pht('ID: %d', $message->getID());
|
|
|
|
$info[] = pht('Status: %s', $message->getStatus());
|
|
|
|
$info[] = pht('Related PHID: %s', $message->getRelatedPHID());
|
|
|
|
$info[] = pht('Author PHID: %s', $message->getAuthorPHID());
|
|
|
|
$info[] = pht('Message ID Hash: %s', $message->getMessageIDHash());
|
|
|
|
|
2013-10-09 22:53:17 +02:00
|
|
|
if ($message->getMessage()) {
|
|
|
|
$info[] = null;
|
|
|
|
$info[] = pht('MESSAGE');
|
|
|
|
$info[] = $message->getMessage();
|
|
|
|
}
|
|
|
|
|
2013-05-20 19:13:42 +02:00
|
|
|
$info[] = null;
|
|
|
|
$info[] = pht('HEADERS');
|
|
|
|
foreach ($message->getHeaders() as $key => $value) {
|
2013-11-13 06:23:23 +01:00
|
|
|
if (is_array($value)) {
|
|
|
|
$value = implode("\n", $value);
|
|
|
|
}
|
2013-05-20 19:13:42 +02:00
|
|
|
$info[] = pht('%s: %s', $key, $value);
|
|
|
|
}
|
|
|
|
|
|
|
|
$bodies = $message->getBodies();
|
|
|
|
|
|
|
|
$last_body = last_key($bodies);
|
|
|
|
|
|
|
|
$info[] = null;
|
|
|
|
$info[] = pht('BODIES');
|
|
|
|
foreach ($bodies as $key => $value) {
|
|
|
|
$info[] = pht('Body "%s"', $key);
|
|
|
|
$info[] = $value;
|
|
|
|
if ($key != $last_body) {
|
|
|
|
$info[] = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$attachments = $message->getAttachments();
|
|
|
|
|
|
|
|
$info[] = null;
|
|
|
|
$info[] = pht('ATTACHMENTS');
|
|
|
|
if (!$attachments) {
|
|
|
|
$info[] = pht('No attachments.');
|
|
|
|
} else {
|
|
|
|
foreach ($attachments as $attachment) {
|
|
|
|
$info[] = pht('File PHID: %s', $attachment);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$console->writeOut("%s\n", implode("\n", $info));
|
|
|
|
|
|
|
|
if ($message_key != $last_key) {
|
|
|
|
$console->writeOut("\n%s\n\n", str_repeat('-', 80));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|