Есть ли способ уменьшить задержку электронной почты PHP Mail () - PullRequest
0 голосов
/ 29 декабря 2018

Я использую веб-сайт fastcomet и пытаюсь создать систему обмена сообщениями обратной связи.

Я создал следующую функцию для организации шаблона для отправки электронных писем вместе с сопровождающими их заголовками.

send_email.php

<?php
function send_email($to,$from,$title,$sending_message){

$message="<html><body>";
$message.=$sending_message;
$message.="</body></html>";

$headers = "From: ". $from . "\r\n";
$headers .= "Reply-To: ". $from ."\r\n";
$headers .= "Return-Path:".  $from . " \r\n";
$headers .= "CC:\r\n";
$headers .= "BCC:\r\n";

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

return mail($to, $title,$message,$headers);

}

?>

На других страницах я использую следующий код include 'send_email.php' и функцию send_email($to, $title,$message,$headers), и она работает.Единственная проблема заключается в том, что получение электронной почты либо занимает слишком много времени, либо носит произвольный характер.

Иногда я проверяю систему обратной связи, отправляя 3 электронных письма.Например: Email1, Email2, Email3 отправляются в следующем порядке.Иногда я получаю Email3 сначала, чем Email1 или Email2, а не Email3.

С точки зрения времени, иногда я получаю электронное письмо через несколько минут, но иногда через несколько часов, что затрудняет тестирование, потому чтоЯ не смогу узнать результаты кода в течение нескольких часов, что заставляет меня задуматься, работал ли мой код.

Примечание:

  • Используяследующий код echo "<p>". error_get_last()['message'] . "</p>"; Я могу выяснить, что функция действительно запустилась.

    • Я попытался протестировать как запрос AJAX, так и отправку формы, и обнаружил, что отправка формы обычно занимает меньше времени дляэто будет получено.(хотя мне нравится концепция запроса AJAX, когда мне не нужно менять страницу)

Мой вопрос заключается в том, есть ли способ сократить времятребуется, чтобы получить письмо?или есть лучший способ подойти к этой проблеме?

1 Ответ

0 голосов
/ 29 декабря 2018

Вы задаете себе вопросы, ответ на которые действительно должен лежать у специального провайдера электронной почты.

PHP не "отправляет" электронное письмо с mail().PHP делегирует либо SMTP-серверу, либо sendmail на сервере, на котором работает PHP;оттуда каждый канал имеет дополнительную задержку:

  • В зависимости от версии программного обеспечения, предоставляющего sendmail, ваша почта может попасть в очередь для последующей обработки / отправки
  • В зависимости отSMTP-сервер, эта очередь также может существовать там
  • SMTP-сервер получателя может иметь свои собственные требования к обработке и набор правил, что может привести к увеличению задержки.

«Задержка»разница, которую вы видите между AJAX и / или отправкой формы, не связана с тем, каким способом вы выполняете запрос.Они относятся исключительно к статистике и базовым очередям.

Переключение и эффективный "аутсорсинг" (это не так, но это самое близкое слово) ваши возможности исходящей электронной почты для сторонних производителей обеспечат некоторую ясность в этом, наряду смного дополнительных функций.Большинство также позволит вам увидеть, что электронные письма задерживаются / не отправляются / возвращаются сверху, что является еще одним крупным выигрышем.И, честно говоря, это тоже довольно дешево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...