function cw_parse_mail($msgs, $level = 0) { if (empty($msgs)) { return false; } $lend = CW_IS_OS_WINDOWS ? "\r\n" : "\n"; $head = ""; $msg = ""; # Subarray if (is_array($msgs['content'])) { # Subarray is full if (count($msgs['content']) > 1) { $boundary = substr(uniqid(time() + rand() . "_"), 0, 16); $msgs['header']['Content-Type'] .= ";{$lend}\t boundary=\"{$boundary}\""; foreach ($msgs['header'] as $k => $v) { $head .= $k . ": " . $v . $lend; } if ($level > 0) { $msg = $head . $lend; } for ($x = 0; $x < count($msgs['content']); $x++) { $res = cw_parse_mail($msgs['content'][$x], $level + 1); $msg .= "--" . $boundary . $lend . $res[1] . $lend; } $msg .= "--" . $boundary . "--" . $lend; } else { # Subarray have only one element list($msgs['header'], $msgs['content']) = cw_parse_mail($msgs['content'][0], $level); } } # Current array - atom if (!is_array($msgs['content'])) { if (is_array($msgs['header'])) { foreach ($msgs['header'] as $k => $v) { $head .= $k . ": " . $v . $lend; } } if ($level > 0) { $msg = $head . $lend; } $msg .= $msgs['content'] . $lend; } # Header substitute if (empty($head)) { if (is_array($msgs['header'])) { foreach ($msgs['header'] as $k => $v) { $head .= $k . ": " . $v . $lend; } } else { $head = $msgs['header']; } } return array($head, $msg); }
$paths = explode(",", $mail['files']); if (is_array($paths)) { foreach ($paths as $path) { if ($path && file_exists($path)) { $ext = end(explode(".", basename($path))); $files[] = array('type' => cw_attach_get_content_type($ext), 'name' => basename($path), 'data' => file_get_contents($path)); } } } } if (!empty($files)) { foreach ($files as $v) { $msgs['content'][] = array("header" => array("Content-Type" => "{$v['type']};{$lend}\tname=\"{$v['name']}\"", "Content-Transfer-Encoding" => "base64", "Content-Disposition" => "attachment", "Content-ID" => "<{$v['name']}>"), "content" => chunk_split(base64_encode($v['data']))); } } list($message_header, $mail_message) = cw_parse_mail($msgs); $mail_from = $from; if ($config['Email']['use_base64_headers'] == "Y") { $mail_subject = cw_mail_quote($mail_subject, $charset); } $headers = "From: " . $mail_from . $lend . "X-Mailer: PHP/" . phpversion() . $lend . "MIME-Version: 1.0" . $lend . $message_header; if (trim($mail_from) != "") { $headers .= 'Reply-to: ' . $mail_from . $lend; } $mail_result = false; if ($config['Email']['use_smtp'] == "Y") { $mail_data = array('from' => $mail_from, 'send_to' => $to, 'subject' => $mail_subject, 'body' => $orig_mail_message, 'alt_body' => $plain_mail_message); $mail_result = cw_smtp_send_mail($mail_data, $config['Email']['smtp_debug_enabled'] == 'Y' ? 2 : 0); cw_log_add('phpmailer_sent', $mail_data); } else { if (preg_match('/([^ @,;<>]+@[^ @,;<>]+)/S', $from, $m)) {