2014-10-30 1 views
0

У меня есть приложение, работающее в Wordpress (используя $ wpdb) для отправки текста по электронной почте. Они отправляют на адрес [email protected], который передает их мобильный телефон.Отправка текстового сообщения через адрес электронной почты - Сообщения не в порядке

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

for ($i=0; $i<count($recipientEmail); $i++) { 
     $to = $recipientEmail[$i]; 
     if (strlen($message) > 115) { 
      // ceil rounds any fractions up 
      $numTexts = ceil(strlen($message)/115); 
      $zero = 0; 
      $onetwentyfive = 115; 
      $noRepeatconfirmations = ''; 
      for ($n=0; $n<$numTexts; $n++) { 
       $messagePart = substr($message, $zero, $onetwentyfive); 
       $messagePart .= "\r\n".($n+1)." of ".$numTexts; 
       if ($n > 0) { 
        $messagePart = '-'.$messagePart; 
       } 
       // if (!filter_var($to, FILTER_VALIDATE_EMAIL)) { 
       if (!wp_mail($to, $subject, $messagePart, $headers)) { 
        return false; 
       } else { 
        if ($noRepeatconfirmations !== $recipientEmail[$i]) { 
         $total .= $recipientEmail[$i].", "; 
        } 
        $noRepeatconfirmations = $recipientEmail[$i]; 
       } 
       $zero += 115; 
       $onetwentyfive += 115; 
      } 
     } else { 
      // if (!filter_var($to, FILTER_VALIDATE_EMAIL)) { 
      if (!wp_mail($to, $subject, $message, $headers)) { 
       return false; 
      } else { 
       $total .= $recipientEmail[$i].", "; 
      } 
     } 
    } 

Моя проблема заключается в том, что когда я посылаю длинный сигнал тревоги к себе он посылает в правильном порядке, но когда я отправляю сообщение для 150+ человека он посылает в странном порядке (третьем , 1-й, 2-й).

Мне было интересно, есть ли способ, который я мог бы использовать в своем коде или настройке на моем почтовом ящике, который я могу использовать для отправки сообщений по порядку.

+0

См. Этот ответ http://stackoverflow.com/a/26661243/, это может помочь вам понять, как сортировать массив. Я не спустил ни к чему. Я знаю, что сортировка массивов может быть трудной время от времени, и я не смогу помочь никакому дальнейшему Николаю. Если этот ответ не поможет или кажется сложным, продолжите свое исследование в Google, используя «массив сортировки чисел PHP». Удачи. –

+0

Кстати, отправка SMS по электронной почте работает в небольших объемах, но не ожидайте, что перевозчики смогут это позволить, если вы начнете толкнуть большой объем. Для этого вам понадобится что-то вроде Twilio. – ceejayoz

ответ

2

Невозможно гарантировать, что SMS, MMS или сообщения электронной почты будут получены в том порядке, в котором они были отправлены, за исключением интервалов между ними на расстоянии 10 секунд. Надеюсь, сообщение A будет доставлено до отправки B, а B доставляется до C и т. Д.

Даже по-прежнему это не на 100%, так как некоторые почтовые серверы будут помещать в очередь сообщения перед доставкой (отправителем и получающими конечными точками).

Это просто природа зверя.

ПРИМЕЧАНИЕ. Я не уверен на 100% на MMS, но на 100% положителен на электронную почту и около 75% на SMS.

+0

Возможно, вы захотите изучить использование API шлюза SMS. Самое большое препятствие, которое я вижу, - это использовать электронную почту для доставки. Взгляните на что-то вроде http://www.message-media.com/business/products/integration#developer-apis – Wranorn

+0

Это то, чего я боялся. Я просто ограничу сообщение определенной длиной. Благодарю. –

+0

На самом деле у меня появилась идея вместо отправки 3 электронных писем за один раз для каждого пользователя, отправьте каждому пользователю первую часть, затем отправьте вторую часть и т. Д. Я думаю, что это должно решить проблему, поскольку отправка 150 пользователям будет достаточно задержки. –

Смежные вопросы