smtp — функция php mail для обмена сервером не получена

Недавно мы перешли от использования нашего сервера imap хостов к серверу обмена Office365.

Все с нашей электронной почтой, кажется, работает хорошо, за исключением нашего подтверждения заказа веб-сайта.

Наш веб-сайт использует функцию PHP mail при обработке заказа, чтобы отправить электронное письмо как клиенту, так и себе:

  tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

Клиент по-прежнему получает подтверждение по электронной почте, однако, по-видимому, существует большая задержка по времени (около 10 минут до получения, проверенная на учетной записи Gmail), когда, как и до переключения на сервер обмена, он был в основном получен мгновенно.

Однако SEND_EXTRA_ORDER_EMAILS_TO никогда не получен нашим сервером обмена.

Есть ли что-то, что блокирует отправку писем на сервер обмена таким образом?

Вот функция tep_mail:

function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
if (SEND_EMAILS != 'true') return false;

// Instantiate a new mail object
$message = new email(array('X-Mailer: osCommerce'));

// Build the text version
$text = strip_tags($email_text);
if (EMAIL_USE_HTML == 'true') {
$message->add_html($email_text, $text);
} else {
$message->add_text($text);
}

// Send message
$message->build_message();
$message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);
}

И функция отправки:

 function send($to_name, $to_addr, $from_name, $from_addr, $subject = '', $headers = '') {
if ((strstr($to_name, "\n") != false) || (strstr($to_name, "\r") != false)) {
return false;
}

if ((strstr($to_addr, "\n") != false) || (strstr($to_addr, "\r") != false)) {
return false;
}

if ((strstr($subject, "\n") != false) || (strstr($subject, "\r") != false)) {
return false;
}

if ((strstr($from_name, "\n") != false) || (strstr($from_name, "\r") != false)) {
return false;
}

if ((strstr($from_addr, "\n") != false) || (strstr($from_addr, "\r") != false)) {
return false;
}

$to = (($to_name != '') ? '"' . $to_name . '" <' . $to_addr . '>' : $to_addr);
$from = (($from_name != '') ? '"' . $from_name . '" <' . $from_addr . '>' : $from_addr);

if (is_string($headers)) {
$headers = explode($this->lf, trim($headers));
}

for ($i=0; $i<count($headers); $i++) {
if (is_array($headers[$i])) {
for ($j=0; $j<count($headers[$i]); $j++) {
if ($headers[$i][$j] != '') {
$xtra_headers[] = $headers[$i][$j];
}
}
}

if ($headers[$i] != '') {
$xtra_headers[] = $headers[$i];
}
}

if (!isset($xtra_headers)) {
$xtra_headers = array();
}

if (EMAIL_TRANSPORT == 'smtp') {
return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
} else {
return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));
}
}

Обновление: Использование другой учетной записи Gmail в качестве учетной записи «admin» работает. Так что есть что-то, что сервер Exchange блокирует от получения функции почты

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector