Отправка текстового сообщения через адрес электронной почты - Сообщения не по порядку

У меня есть приложение, работающее в 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 людям, оно отправляется в странном порядке (3-е, 1-е, 2-е).

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


person Nick S.    schedule 30.10.2014    source источник
comment
См. этот ответ stackoverflow.com/a/26661243, он может помочь вам понять, как сортировать массив. Кстати, я не минусовал. Я знаю, что сортировка массивов иногда может быть сложной, и я больше не смогу помочь, Николас. Если этот ответ не помогает или кажется сложным, продолжайте свои исследования в Google, используя массив номеров сортировки PHP. Удачи.   -  person Funk Forty Niner    schedule 30.10.2014
comment
Кстати, отправка SMS по электронной почте работает в небольших объемах, но не ожидайте, что операторы разрешат это, если вы начнете наращивать объемы. Для этого вам понадобится что-то вроде Twilio.   -  person ceejayoz    schedule 31.10.2014


Ответы (1)


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

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

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

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

person Wranorn    schedule 30.10.2014
comment
Возможно, вы захотите изучить использование API шлюза SMS. Самым большим препятствием, которое я вижу, является использование электронной почты для доставки. Взгляните на что-то вроде message-media.com/business/products/ интеграция#developer-apis - person Wranorn; 31.10.2014
comment
Вот чего я боялся. Я просто ограничу сообщение до определенной длины. Спасибо. - person Nick S.; 31.10.2014
comment
На самом деле у меня просто возникла идея вместо того, чтобы отправлять по 3 письма каждому пользователю за раз, отправлять каждому пользователю первую часть, затем отправлять вторую часть и т. д. Я думаю, что это должно решить проблему, так как отправка 150 пользователям будет достаточной задержкой. - person Nick S.; 31.10.2014
comment
Может сработать,... Но я сказал,... Все еще не гарантия,... Особенно, если серверы ставят сообщения в очередь для доставки (это устаревшая [IMO] тактика, используемая для минимизации пропускной способности и нагрузки, но она все еще используется). - person Wranorn; 31.10.2014