diff --git a/lib/util.php b/lib/util.php --- a/lib/util.php +++ b/lib/util.php @@ -244,6 +244,71 @@ function error_msg($message) echo sprintf('%s'."\n", $message); } +// -------------------------------------------------- +// |||:sec:||| vaccation(1) message +// -------------------------------------------------- + +function vacation_split($message, $decode) +{ + $lines = explode("\n", $message); + $subject = array_shift($lines); + $subject = preg_replace('/^[Ss]ubject: */', '', $subject); + $headers = Array(); + // remove additional headers + while (True) { + $line = array_shift($lines); + if (empty($line)) { + break; + } + $headers[] = $line; + } + $headers = implode($headers, "\n"); + $body = implode($lines, "\n"); + if ( $decode ) + { + if ( preg_match("/^=[?]/", $subject) ) + { + $subject = preg_replace('/^=[?]utf-8[?]Q[?]/', '', $subject); + $subject = preg_replace('/[?]=$/', '', $subject); + $subject = quoted_printable_decode($subject); + } + $body = quoted_printable_decode($body); + } + return Array($subject, $headers, $body); +} + +function vacation_join($subject, $body, $headers=Null) +{ + $subject = trim($subject); + $subjectq = quoted_printable_encode($subject); + if ( $subjectq != $subject ) + { + $subject = sprintf('=?utf-8?Q?%s?=', $subjectq); + } + $subject = 'Subject: ' . $subject; + $headera = Array( + $subject, + 'Content-Type: text/plain;'."\n" + .' charset="utf-8"'."\n" + .'Content-Transfer-Encoding: quoted-printable'); + if (!empty($headers)) + { + $headers = trim($headers); + if (!empty($headers)) + { + $headers = preg_replace("/\n\n+/", "\n", $headers); + $headera[] = $headers; + } + } + $headers = implode($headera, "\n"); + if (empty($body)) + { + $body = ''; + } + return sprintf("%s\n\n%s\n", + $headers, quoted_printable_encode($body)); +} + // // :ide-menu: Emacs IDE Menu - Buffer @BUFFER@ // . M-x `eIDE-menu' ()(eIDE-menu "z")