1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-09 16:32:39 +01:00

Globally limit the size of generated emails.

Summary: At the global level, truncate emails at a user-configured size.

Test Plan: Untested, as I could not get PHP to send emails on my box, but if you can this should be very easy to test. Just set the max size to something like .001 kilobytes and make sure it does the right thing.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin, AnhNhan

Maniphest Tasks: T1392

Differential Revision: https://secure.phabricator.com/D6118
This commit is contained in:
Bryan Cuccioli 2013-06-05 05:39:08 -07:00 committed by epriestley
parent 758586abda
commit d78386584f
3 changed files with 21 additions and 0 deletions

View file

@ -285,6 +285,10 @@ return array(
// mostly never arrive. // mostly never arrive.
'metamta.can-send-as-user' => false, 'metamta.can-send-as-user' => false,
// Limit the maximum size of the body of an email generated for a diff
// (in bytes).
'metamta.email-body-limit' => 524288,
// Adapter class to use to transmit mail to the MTA. The default uses // Adapter class to use to transmit mail to the MTA. The default uses
// PHPMailerLite, which will invoke "sendmail". This is appropriate // PHPMailerLite, which will invoke "sendmail". This is appropriate
// if sendmail actually works on your host, but if you haven't configured mail // if sendmail actually works on your host, but if you haven't configured mail

View file

@ -338,6 +338,17 @@ EODOC
->addExample( ->addExample(
'gwashington (George Washington) <gwashington@example.com>', 'gwashington (George Washington) <gwashington@example.com>',
'full'), 'full'),
$this->newOption('metamta.email-body-limit', 'int', 524288)
->setDescription(
pht(
'You can set a limit for the maximum byte size of outbound mail. '.
'Mail which is larger than this limit will be truncated before '.
'being sent. This can be useful if your MTA rejects mail which '.
'exceeds some limit (this is reasonably common). Specify a value '.
'in bytes.'))
->setSummary(pht('Global cap for size of generated emails (bytes).'))
->addExample(524288, pht('Truncate at 512KB'))
->addExample(1048576, pht('Truncate at 1MB'))
); );
} }

View file

@ -445,6 +445,12 @@ final class PhabricatorMetaMTAMail extends PhabricatorMetaMTADAO {
} }
break; break;
case 'body': case 'body':
$max = PhabricatorEnv::getEnvConfig('metamta.email-body-limit');
if (strlen($value) > $max) {
$value = phutil_utf8_shorten($value, $max);
$value .= "\n";
$value .= pht('(This email was truncated at %d bytes.)', $max);
}
$mailer->setBody($value); $mailer->setBody($value);
break; break;
case 'subject': case 'subject':