+
+
+ /* Use 'rb' for NT systems -- read binary
+ * Unix doesn't care -- everything's binary! :-)
+ */
+
+ $filename = $hashed_attachment_dir . '/'
+ . $info['localfilename'];
+ $file = fopen ($filename, 'rb');
+ if (substr($filetype, 0, 5) == 'text/' ||
+ substr($filetype, 0, 8) == 'message/' ) {
+ $header .= $rn;
+ if ($fp) {
+ fputs ($fp, $header);
+ }
+ $length += strlen($header);
+
+ if ($checkdot) {
+ $checkdot_begin=true;
+ } else {
+ $checkdot_begin=false;
+ }
+
+ while ($tmp = fgets($file, 4096)) {
+ $tmp = str_replace("\r\n", "\n", $tmp);
+ $tmp = str_replace("\r", "\n", $tmp);
+ if ($rn == "\r\n"){
+ $tmp = str_replace("\n", "\r\n", $tmp);
+ }
+ if ($tmp{0} == '.' && $checkdot_begin) {
+ $tmp = '.' . $tmp;
+ }
+ if ($checkdot) {
+ $tmp = str_replace("\n.","\n..",$tmp);
+ }
+
+ $tmp_length = strlen($tmp);
+ if ($tmp_length && $tmp{$tmp_length-1} == "\n" && $checkdot) {
+ $checkdot_begin = true;
+ } else {
+ $checkdot_begin = false;
+ }
+
+
+ if ($fp) {
+ fputs($fp, $tmp);
+ }
+ $length += $tmp_length;
+ }
+ if (substr($tmp, $tmp_length - strlen($rn), strlen($rn)) != $rn) {
+ if ($fp) {
+ fputs($fp, $rn);
+ }
+ $length += strlen($rn);
+ }
+
+
+ } else {
+ $header .= "Content-Transfer-Encoding: base64"
+ . "$rn" . "$rn";
+ if ($fp) fputs ($fp, $header);
+ $length += strlen($header);
+ while ($tmp = fread($file, 570)) {
+ $encoded = chunk_split(base64_encode($tmp));
+ $length += strlen($encoded);
+ if ($fp) fputs ($fp, $encoded);
+ }