- /* 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 .= "\r\n";
- fputs ($fp, $header);
- $length += strlen($header);
- while ($tmp = fgets($file, 4096)) {
- $tmp = str_replace("\r\n", "\n", $tmp);
- $tmp = str_replace("\r", "\n", $tmp);
- $tmp = str_replace("\n", "\r\n", $tmp);
- if (feof($fp) && substr($tmp, -2) != "\r\n") {
- $tmp .= "\r\n";
+
+ /* 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";
+ fputs ($fp, $header);
+ $length += strlen($header);
+ 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);
+ }
+ /**
+ * Check if the last line has newline ($rn) in it
+ * and append if it doesn't.
+ */
+ if (feof($fp) && !strstr($tmp, "$rn")){
+ $tmp .= "$rn";
+ }
+ fputs($fp, $tmp);
+ $length += strlen($tmp);
+ }
+ } else {
+ $header .= "Content-Transfer-Encoding: base64"
+ . "$rn" . "$rn";
+ fputs ($fp, $header);
+ $length += strlen($header);
+ while ($tmp = fread($file, 570)) {
+ $encoded = chunk_split(base64_encode($tmp));
+ $length += strlen($encoded);
+ fputs ($fp, $encoded);