gwynne Mon, 13 Jul 2009 23:40:16 +0000
ViewVC URL: http://svn.php.net/viewvc?view=revision&revision=284032
Changed paths:
U SVNROOT/commit-email.php
Log:
make use of Mail_MIME to correctly encode email, deal with ISO-8859-1/UTF-8
inconsistencies in users.db with an ugly hack, other small tweaks
Modified: SVNROOT/commit-email.php
===================================================================
--- SVNROOT/commit-email.php 2009-07-13 22:30:37 UTC (rev 284031)
+++ SVNROOT/commit-email.php 2009-07-13 23:40:16 UTC (rev 284032)
@@ -111,13 +111,24 @@
// Determine "from" address
// Various repositories can play with this to read from their equivelant of
the old cvsusers folder, or whatever else they like
$usersDB = file(dirname(__FILE__) . '/users.db');
+$from = NULL;
+$saw_last_ISO = FALSE;
foreach ($usersDB as $userline) {
list ($username, $fullname, $email) = explode(":", trim($userline));
- if ($username == $commit_user) {
- $from = imap_8bit("\"{$fullname}\" <{[email protected]>");
+ if ($username === 'ladderalice') {
+ $saw_last_ISO = TRUE;
+ }
+ if ($username === $commit_user) {
+ if (!$saw_last_ISO) {
+ $fullname = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $fullname);
+ }
+ $from = "\"{$fullname}\" <{[email protected]>";
break;
}
}
+if (is_null($from)) {
+ die("Couldn't find user\n");
+}
//
-----------------------------------------------------------------------------------------------------------------------------
// Build list of e-mail addresses and parent changed path
@@ -148,17 +159,16 @@
//
-----------------------------------------------------------------------------------------------------------------------------
// Build e-mail
-$subject = "svn: {$parent_path}";
+$old_er = error_reporting(E_ERROR | E_WARNING); // Because it's PEAR code and
thus throws E_STRICT and E_DEPRECATED all over the place, sigh
+require 'Mail/mime.php';
-$msg_headers = "From: {$from}\n" .
- "To: " . implode(', ', $emails_to) . "\n" .
- "Message-ID: <svn{$commit_user}{[email protected]>\n" .
- "Date: " . date(DATE_RFC822, $commit_date) . "\n" .
- "Subject: {$subject}\n";
+$mime_email = new Mail_mime("\r\n");
+$mime_email->setFrom($from);
+$mime_email->setSubject("svn: {$parent_path}");
$msg_body = "{$commit_user}\t\t" . date(DATE_RFC2822, $commit_date) . "\n" .
"\n" .
- "ViewVC URL:
http://svn.php.net/viewvc?view=revision&revision={$REV}\n" .
+ "URL: http://svn.php.net/viewvc?view=revision&revision={$REV}\n" .
"\n" .
"Changed paths:\n" .
"\t" . implode("\n\t", $changed_paths) . "\n" .
@@ -166,30 +176,30 @@
"Log:\n" .
wordwrap($commit_log, 80, "\n") . "\n" .
"\n";
-
-if (strlen($diffs) >= (96 * 1024)) {
- $msg_body .= "<diffs exceeded maximum size>\n";
-} else if (strlen($diffs) >= 8192) {
- $boundary = $commit_user. $commit_date;
- $msg_headers .= "MIME-Version: 1.0\n" .
- "Content-Type: multipart/mixed;
boundary=\"{$boundary}\"\n";
- $msg_body = "This is a MIME encoded message.\n\n--{$boundary}\n" .
- "Content-Type: text/plain\n" .
- "\n" .
- "{$msg_body}\n" .
- "--{$boundary}\n" .
- "Content-Type: text/plain\n" .
- "Content-Disposition: attachment;
filename=\"{$boundary}.txt\"\n" .
- "\n" .
- "{$diffs}\n" .
- "--{$boundary}--\n";
+if (strlen($diffs) >= (256 * 1024)) {
+ $msg_body .= "<diffs exceeded maximum size>\n";
+} else if (strlen($diffs) > 8192) {
+ $mime_email->addAttachment($diffs, "text/x-diff",
+ "{$commit_user}{$commit_date}.txt", FALSE, "base64", "attachment",
+ "utf-8");
} else {
$msg_body .= $diffs;
}
+$mime_email->setTXTBody($msg_body, FALSE, FALSE);
-$complete_email = $msg_headers . "\n" . $msg_body;
-$complete_email = str_replace(array("\r", "\n", "\r\n."), array("", "\r\n",
".."), $complete_email);
+$complete_email = $mime_email->getMessage(NULL, array(
+ 'head_encoding' => 'quoted-printable',
+ 'text_encoding' => 'quoted-printable',
+ 'text_charset' => 'utf-8',
+ 'head_charset' => 'utf-8'
+ ), array(
+ 'To' => implode(', ', $emails_to),
+ 'Message-ID' => "<svn{$commit_user}{[email protected]>",
+ 'Date' => date(DATE_RFC2822, $commit_date)
+ ), TRUE);
+error_reporting($old_er);
+
//
-----------------------------------------------------------------------------------------------------------------------------
// Send e-mail
if (isset($_ENV['DEBUG']) && $_ENV['DEBUG'] == 'DEBUG') {
@@ -213,7 +223,9 @@
".\r\n" .
"QUIT\r\n");
-$discard = stream_get_contents($socket);
+if (!isset($_ENV['DEBUG']) || $_ENV['DEBUG'] != 'DEBUG') {
+ $discard = stream_get_contents($socket);
+}
fclose($socket);
?>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php