| | |
| | | function addAttachment($file, |
| | | $c_type = 'application/octet-stream', |
| | | $name = '', |
| | | $isfile = true, |
| | | $isfile = true, |
| | | $encoding = 'base64', |
| | | $disposition = 'attachment', |
| | | $charset = '', |
| | | $language = '', |
| | | $language = '', |
| | | $location = '', |
| | | $n_encoding = NULL, |
| | | $f_encoding = NULL) |
| | | $n_encoding = NULL, |
| | | $f_encoding = NULL) |
| | | { |
| | | $filedata = ($isfile === true) ? $this->_file2str($file) |
| | | : $file; |
| | | $filedata = ($isfile === true) ? $this->_file2str($file) : $file; |
| | | |
| | | if (PEAR::isError($filedata)) { |
| | | return $filedata; |
| | | } |
| | | |
| | | if ($isfile === true) { |
| | | // Force the name the user supplied, otherwise use $file |
| | | $filename = (strlen($name)) ? $name : $file; |
| | |
| | | return $err; |
| | | } |
| | | $filename = $this->_basename($filename); |
| | | if (PEAR::isError($filedata)) { |
| | | return $filedata; |
| | | } |
| | | |
| | | $this->_parts[] = array( |
| | | 'body' => $filedata, |
| | |
| | | 'language' => $language, |
| | | 'location' => $location, |
| | | 'disposition' => $disposition, |
| | | 'name-encoding' => $n_encoding, |
| | | 'filename-encoding'=> $f_encoding |
| | | 'name-encoding' => $n_encoding, |
| | | 'filename-encoding' => $f_encoding |
| | | ); |
| | | return true; |
| | | } |
| | |
| | | $err = PEAR::raiseError('File is not readable: ' . $file_name); |
| | | return $err; |
| | | } |
| | | |
| | | |
| | | //Temporarily reset magic_quotes_runtime and read file contents |
| | | if ($magic_quote_setting = get_magic_quotes_runtime()) { |
| | | set_magic_quotes_runtime(0); |
| | | } |
| | | $cont = file_get_contents($file_name); |
| | | $cont = file_get_contents($file_name); |
| | | if ($magic_quote_setting) { |
| | | set_magic_quotes_runtime($magic_quote_setting); |
| | | } |
| | | |
| | | |
| | | return $cont; |
| | | } |
| | | |
| | |
| | | { |
| | | $params = array(); |
| | | $params['content_type'] = 'multipart/mixed'; |
| | | |
| | | |
| | | //Create empty multipart/mixed Mail_mimePart object to return |
| | | $ret = new Mail_mimePart('', $params); |
| | | return $ret; |
| | |
| | | $params['disposition'] = 'inline'; |
| | | $params['dfilename'] = $value['name']; |
| | | $params['cid'] = $value['cid']; |
| | | if ($value['name-encoding']) { |
| | | $params['name-encoding'] = $value['name-encoding']; |
| | | } |
| | | if ($value['filename-encoding']) { |
| | | $params['filename-encoding'] = $value['filename-encoding']; |
| | | } |
| | | |
| | | |
| | | if (!empty($value['name-encoding'])) { |
| | | $params['name-encoding'] = $value['name-encoding']; |
| | | } |
| | | if (!empty($value['filename-encoding'])) { |
| | | $params['filename-encoding'] = $value['filename-encoding']; |
| | | } |
| | | |
| | | $ret = $obj->addSubpart($value['body'], $params); |
| | | return $ret; |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | if ($value['location']) { |
| | | $params['location'] = $value['location']; |
| | | } |
| | | if ($value['name-encoding']) { |
| | | $params['name-encoding'] = $value['name-encoding']; |
| | | } |
| | | if ($value['filename-encoding']) { |
| | | $params['filename-encoding'] = $value['filename-encoding']; |
| | | } |
| | | if ($value['name-encoding']) { |
| | | $params['name-encoding'] = $value['name-encoding']; |
| | | } |
| | | if ($value['filename-encoding']) { |
| | | $params['filename-encoding'] = $value['filename-encoding']; |
| | | } |
| | | $params['content_type'] = $value['c_type']; |
| | | $params['disposition'] = isset($value['disposition']) ? |
| | | $value['disposition'] : 'attachment'; |
| | |
| | | * @access public |
| | | */ |
| | | function getMessage( |
| | | $separation = null, |
| | | $build_params = null, |
| | | $xtra_headers = null, |
| | | $separation = null, |
| | | $build_params = null, |
| | | $xtra_headers = null, |
| | | $overwrite = false |
| | | ) |
| | | { |
| | |
| | | $this->_build_params[$key] = $value; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (isset($this->_headers['From'])){ |
| | | //Bug #11381: Illegal characters in domain ID |
| | | if (preg_match("|(@[0-9a-zA-Z\-\.]+)|", $this->_headers['From'], $matches)){ |
| | |
| | | $this->_html_images[$i]['cid'] = $this->_html_images[$i]['cid'] . $domainID; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (count($this->_html_images) AND isset($this->_htmlbody)) { |
| | | foreach ($this->_html_images as $key => $value) { |
| | | $regex = array(); |
| | |
| | | $rep[] = 'url(\1cid:' . $value['cid'] . '\1)'; |
| | | |
| | | $this->_htmlbody = preg_replace($regex, $rep, $this->_htmlbody); |
| | | $this->_html_images[$key]['name'] = |
| | | $this->_html_images[$key]['name'] = |
| | | $this->_basename($this->_html_images[$key]['name']); |
| | | } |
| | | } |
| | |
| | | |
| | | if (isset($message)) { |
| | | $output = $message->encode(); |
| | | |
| | | |
| | | $this->_headers = array_merge($this->_headers, |
| | | $output['headers']); |
| | | $body = $output['body']; |
| | |
| | | function txtHeaders($xtra_headers = null, $overwrite = false) |
| | | { |
| | | $headers = $this->headers($xtra_headers, $overwrite); |
| | | |
| | | |
| | | $ret = ''; |
| | | foreach ($headers as $key => $val) { |
| | | $ret .= "$key: $val" . MAIL_MIME_CRLF; |
| | |
| | | //$hdr_value_out: The recombined $hdr_val-atoms, or the encoded string. |
| | | //Note: Atom as specified here is not exactly the same as an RFC822 atom, |
| | | //as $atom's may contain just a single space. |
| | | |
| | | $useIconv = true; |
| | | |
| | | $useIconv = true; |
| | | if (isset($build_params['ignore-iconv'])) { |
| | | $useIconv = !$build_params['ignore-iconv']; |
| | | } |
| | | } |
| | | foreach ($input as $hdr_name => $hdr_value) { |
| | | /* |
| | | $parts = preg_split('/([ ])/', $hdr_value, -1, PREG_SPLIT_DELIM_CAPTURE); |
| | |
| | | $imePrefs['output-charset'] = $build_params['head_charset']; |
| | | $imePrefs['line-length'] = 74; |
| | | $imePrefs['line-break-chars'] = "\r\n"; //Specified in RFC2047 |
| | | |
| | | |
| | | $hdr_value = iconv_mime_encode($hdr_name, $hdr_value, $imePrefs); |
| | | $hdr_value = preg_replace("#^{$hdr_name}\:\ #", "", $hdr_value); |
| | | } elseif ($build_params['head_encoding'] == 'base64') { |
| | | //Base64 encoding has been selected. |
| | | //Base64 encode the entire string |
| | | $hdr_value = base64_encode($hdr_value); |
| | | |
| | | |
| | | //Generate the header using the specified params and dynamicly |
| | | //determine the maximum length of such strings. |
| | | //75 is the value specified in the RFC. The first -2 is there so |
| | |
| | | //we can get must be rounded down. |
| | | $maxLength = $maxLength - ($maxLength % 4); |
| | | $maxLength1stLine = $maxLength1stLine - ($maxLength1stLine % 4); |
| | | |
| | | |
| | | $cutpoint = $maxLength1stLine; |
| | | $hdr_value_out = $hdr_value; |
| | | $output = ""; |
| | |
| | | $part = substr($hdr_value_out, 0, $cutpoint); |
| | | $hdr_value_out = substr($hdr_value_out, $cutpoint); |
| | | $cutpoint = $maxLength; |
| | | //RFC 2047 specifies that any split header should |
| | | //RFC 2047 specifies that any split header should |
| | | //be seperated by a CRLF SPACE. |
| | | if ($output) { |
| | | $output .= "\r\n "; |
| | | $output .= "\r\n "; |
| | | } |
| | | $output .= $prefix . $part . $suffix; |
| | | } |
| | |
| | | $hdr_value = substr($hdr_value, 0, -1); |
| | | $quoteSuffix = '"'; |
| | | } |
| | | |
| | | |
| | | //Generate the header using the specified params and dynamicly |
| | | //determine the maximum length of such strings. |
| | | //75 is the value specified in the RFC. The -2 is there so |
| | |
| | | $maxLength = 75 - strlen($prefix . $suffix) - 2 - 1; |
| | | $maxLength1stLine = $maxLength - strlen($hdr_name) - 2; |
| | | $maxLength = $maxLength - 1; |
| | | |
| | | |
| | | //Replace all special characters used by the encoder. |
| | | $search = array('=', '_', '?', ' '); |
| | | $replace = array('=3D', '=5F', '=3F', '_'); |
| | | $hdr_value = str_replace($search, $replace, $hdr_value); |
| | | |
| | | |
| | | //Replace all extended characters (\x80-xFF) with their |
| | | //ASCII values. |
| | | $hdr_value = preg_replace('#([\x80-\xFF])#e', |
| | |
| | | //Fix for Bug #10298, Ota Mares <om@viazenetti.de> |
| | | //Concat the double quotes and encoded string together |
| | | $hdr_value = $quotePrefix . $hdr_value . $quoteSuffix; |
| | | |
| | | |
| | | $hdr_value_out = $hdr_value; |
| | | $realMax = $maxLength1stLine + strlen($prefix . $suffix); |
| | | if (strlen($hdr_value_out) >= $realMax) { |
| | |
| | | //Split translated string at every $maxLength |
| | | //But make sure not to break any translated chars. |
| | | $found = preg_match($reg, $hdr_value_out, $matches); |
| | | |
| | | |
| | | //After this first line, we need to use a different |
| | | //regexp for the first line. |
| | | $reg = $reg2nd; |
| | | |
| | | |
| | | //Save the found part and encapsulate it in the |
| | | //prefix & suffix. Then remove the part from the |
| | | //$hdr_value_out variable. |
| | |
| | | $part = $hdr_value_out; |
| | | $hdr_value_out = ""; |
| | | } |
| | | |
| | | |
| | | //RFC 2047 specifies that any split header should |
| | | //be seperated by a CRLF SPACE |
| | | if ($output) { |
| | | $output .= "\r\n "; |
| | | $output .= "\r\n "; |
| | | } |
| | | $output .= $prefix . $part . $suffix; |
| | | } |
| | |
| | | */ |
| | | function _basename($filename) |
| | | { |
| | | // basename() is not unicode safe and locale dependent |
| | | if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) |
| | | return preg_replace('/^.*[\\\\\\/]/', '', $filename); |
| | | else |
| | | return preg_replace('/^.*[\/]/', '', $filename); |
| | | // basename() is not unicode safe and locale dependent |
| | | if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) |
| | | return preg_replace('/^.*[\\\\\\/]/', '', $filename); |
| | | else |
| | | return preg_replace('/^.*[\/]/', '', $filename); |
| | | } |
| | | |
| | | } // End of class |