| | |
| | | if (isset($smtp_host_url['host']) && isset($smtp_host_url['scheme'])) |
| | | $smtp_host = sprintf('%s://%s', $smtp_host_url['scheme'], $smtp_host_url['host']); |
| | | |
| | | // remove TLS prefix and set flag for use in Net_SMTP::auth() |
| | | if (preg_match('#^tls://#i', $smtp_host)) { |
| | | $smtp_host = preg_replace('#^tls://#i', '', $smtp_host); |
| | | $use_tls = true; |
| | | } |
| | | |
| | | if (!empty($CONFIG['smtp_helo_host'])) |
| | | $helo_host = $CONFIG['smtp_helo_host']; |
| | | else if (!empty($_SERVER['SERVER_NAME'])) |
| | |
| | | $smtp_user = str_replace('%u', $_SESSION['username'], $CONFIG['smtp_user']); |
| | | $smtp_pass = str_replace('%p', $RCMAIL->decrypt($_SESSION['password']), $CONFIG['smtp_pass']); |
| | | $smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type']; |
| | | |
| | | |
| | | // attempt to authenticate to the SMTP server |
| | | if ($smtp_user && $smtp_pass) |
| | | { |
| | | $result = $this->conn->auth($smtp_user, $smtp_pass, $smtp_auth_type); |
| | | $result = $this->conn->auth($smtp_user, $smtp_pass, $smtp_auth_type, $use_tls); |
| | | |
| | | if (PEAR::isError($result)) |
| | | { |
| | | $this->error = array('label' => 'smtpautherror', 'vars' => array('code' => $this->conn->_code)); |
| | |
| | | * Either as an associative array or a finally |
| | | * formatted string |
| | | * |
| | | * @param string The full text of the message body, including any Mime parts, etc. |
| | | * @param mixed The full text of the message body, including any Mime parts |
| | | * or file handle |
| | | * |
| | | * @return bool Returns true on success, or false on error |
| | | */ |
| | |
| | | } |
| | | } |
| | | |
| | | // Concatenate headers and body so it can be passed by reference to SMTP_CONN->data |
| | | // so preg_replace in SMTP_CONN->quotedata will store a reference instead of a copy. |
| | | // We are still forced to make another copy here for a couple ticks so we don't really |
| | | // get to save a copy in the method call. |
| | | $data = $text_headers . "\r\n" . $body; |
| | | if (is_resource($body)) |
| | | { |
| | | // file handle |
| | | $data = $body; |
| | | $text_headers = preg_replace('/[\r\n]+$/', '', $text_headers); |
| | | } else { |
| | | // Concatenate headers and body so it can be passed by reference to SMTP_CONN->data |
| | | // so preg_replace in SMTP_CONN->quotedata will store a reference instead of a copy. |
| | | // We are still forced to make another copy here for a couple ticks so we don't really |
| | | // get to save a copy in the method call. |
| | | $data = $text_headers . "\r\n" . $body; |
| | | |
| | | // unset old vars to save data and so we can pass into SMTP_CONN->data by reference. |
| | | unset($text_headers, $body); |
| | | |
| | | // unset old vars to save data and so we can pass into SMTP_CONN->data by reference. |
| | | unset($text_headers, $body); |
| | | } |
| | | |
| | | // Send the message's headers and the body as SMTP data. |
| | | if (PEAR::isError($result = $this->conn->data($data))) |
| | | if (PEAR::isError($result = $this->conn->data($data, $text_headers))) |
| | | { |
| | | $this->error = array('label' => 'smtperror', 'vars' => array('msg' => $result->getMessage())); |
| | | $this->response[] .= "Failed to send data"; |