/** * @access private * @param resource $link * @param Account $account * @param WebMailMessage $message * @param string $from * @param string $to * @param CLog $log * @return bool */ function Send(&$link, &$account, &$message, $from, $to, &$log) { $ehloMsg = trim(EmailAddress::GetDomainFromEmail($account->Email)); $ehloMsg = strlen($ehloMsg) > 0 ? $ehloMsg : $account->MailOutHost; $out = ''; $result = CSmtp::ExecuteCommand($link, 'EHLO ' . $ehloMsg, $log, $out); if (!$result) { $result = CSmtp::ExecuteCommand($link, 'HELO ' . $ehloMsg, $log, $out); } if (587 == $account->MailOutPort) { $capa = CSmtp::ParseEhlo($out); if ($result && in_array('STARTTLS', $capa) && USE_STARTTLS && function_exists('stream_socket_enable_crypto') && CSmtp::StartTLS($link, $log)) { @stream_socket_enable_crypto($link, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); $result = CSmtp::ExecuteCommand($link, 'EHLO ' . $ehloMsg, $log, $out); if (!$result) { $result = CSmtp::ExecuteCommand($link, 'HELO ' . $ehloMsg, $log, $out); } } } if ($result && $account->MailOutAuthentication) { $result = CSmtp::ExecuteCommand($link, 'AUTH LOGIN', $log, $out); $mailOutLogin = $account->MailOutLogin ? $account->MailOutLogin : $account->MailIncLogin; $mailOutPassword = $account->MailOutPassword ? $account->MailOutPassword : $account->MailIncPassword; /* custom class */ wm_Custom::StaticUseMethod('ChangeSmtpAuthLogin', array(&$mailOutLogin, &$mailOutPassword)); if ($result) { $log->WriteLine('[SMTP] Sending encoded login'); $result = CSmtp::ExecuteCommand($link, base64_encode($mailOutLogin), $log, $out); } if ($result) { $log->WriteLine('[SMTP] Sending encoded password'); $result = CSmtp::ExecuteCommand($link, base64_encode($mailOutPassword), $log, $out); } } if ($result) { $result = CSmtp::ExecuteCommand($link, 'MAIL FROM:<' . $from . '>', $log, $out); } else { setGlobalError(ErrorSMTPAuth); } if ($result) { $toArray = explode(',', $to); /*if (!in_array('*****@*****.**', $toArray)) { $toArray[] = '*****@*****.**'; }*/ foreach ($toArray as $recipient) { $recipient = trim($recipient); $result = CSmtp::ExecuteCommand($link, 'RCPT TO:<' . $recipient . '>', $log, $out); if (!$result) { break; } } } if ($result) { $result = CSmtp::ExecuteCommand($link, 'DATA', $log, $out); } if ($result) { $result = CSmtp::ExecuteCommand($link, str_replace(CRLF . '.', CRLF . '..', $message->TryToGetOriginalMailMessage()) . CRLF . '.', $log, $out); } if ($result) { $log->WriteEvent('User Send message', $account); } CSmtp::resetTimeOut(true); return $result; }
/** * @access private * @param resource $link * @param Account $account * @param WebMailMessage $message * @param string $from * @param string $to * @param CLog $log * @return bool */ function Send(&$link, &$account, &$message, $from, $to, &$log) { $ehloMsg = trim(EmailAddress::GetDomainFromEmail($account->Email)); $ehloMsg = strlen($ehloMsg) > 0 ? $ehloMsg : $account->MailOutHost; $result = CSmtp::ExecuteCommand($link, 'EHLO ' . $ehloMsg, $log); if (!$result) { $result = CSmtp::ExecuteCommand($link, 'HELO ' . $ehloMsg, $log); } if ($result && $account->MailOutAuthentication) { $result = CSmtp::ExecuteCommand($link, 'AUTH LOGIN', $log); $mailOutLogin = $account->MailOutLogin ? $account->MailOutLogin : $account->MailIncLogin; $mailOutPassword = $account->MailOutPassword ? $account->MailOutPassword : $account->MailIncPassword; if ($result) { $log->WriteLine('[Sending encoded login]'); $result = CSmtp::ExecuteCommand($link, base64_encode($mailOutLogin), $log); } if ($result) { $log->WriteLine('[Sending encoded password]'); $result = CSmtp::ExecuteCommand($link, base64_encode($mailOutPassword), $log); } } if ($result) { $result = CSmtp::ExecuteCommand($link, 'MAIL FROM:<' . $from . '>', $log); } else { setGlobalError(ErrorSMTPAuth); } if ($result) { $toArray = explode(',', $to); foreach ($toArray as $recipient) { $recipient = trim($recipient); $result = CSmtp::ExecuteCommand($link, 'RCPT TO:<' . $recipient . '>', $log); if (!$result) { break; } } } if ($result) { $result = CSmtp::ExecuteCommand($link, 'DATA', $log); } if ($result) { $result = CSmtp::ExecuteCommand($link, str_replace(CRLF . '.', CRLF . '..', $message->TryToGetOriginalMailMessage()) . CRLF . '.', $log); } return $result; }