CakePhP Активация Отправка электронной почты медленно - PullRequest
3 голосов
/ 17 января 2010

У меня есть простой отправитель электронной почты для активации учетной записи пользователя. В зависимости от того, какой адрес электронной почты я использую, я получаю значительно разные времена ответа: университетская электронная почта - 1 минута, Gmail - 3-4 часа, Yahoo - 1 или 2 дня - что кажется странным. Кто-нибудь еще видел это явление?

EDIT:

Было не так много ответов (даже за вознаграждение), но я постараюсь объяснить свою проблему более четко.

Это вероятно не грейлстинг - если я так прост:

php mail ($to, $subject, $body) // this delivers instantly.

Мой код CakePHP:

    function __sendActivationEmail($id) {
    $User = $this->User->read ( null, $id );
    $this->set ( 'suffix_url', $User ['User'] ['id'] . '/' . $this->User->getActivationHash () );
    $this->set ( 'username', $User ['User'] ['username'] );
    $this->Email->to = $User ['User'] ['email'];
    $this->Email->subject = 'Test.com - ' . __ ( 'please confirm your email address', true );
    $this->Email->from = 'noreply@test.com';
    $this->Email->template = 'user_confirm';
    $this->Email->sendAs = 'text';
    $this->Email->delivery = 'mail';
    $this->Email->send ();
}

Вызывает задержки от 13 минут (хорошо; мы разберемся с этим) до 5-6 часов (менее хорошо, так как это электронное письмо для активации). Для некоторых из моих пользователей это работает мгновенно, но для других пользователей (того же поставщика услуг, то есть gmail, он видит эти задержки).

Есть какие-нибудь подсказки?

Ответы [ 4 ]

1 голос
/ 18 января 2010

Код выглядит нормально, но он, конечно, ничего не говорит о конфигурации почтового сервера. 3-4 часа я бы положил на Greylisting, но 1-2 дня это определенно слишком много. Это воспроизводимо? Сколько адресов вы пробовали это с?

Как выглядят полные заголовки (полученных) писем? Путь "полученный от: ...." должен указывать, в какой момент для доставки потребовалось 1-2 дня.

0 голосов
/ 05 апреля 2010

Так что после дальнейшего копания я понял, что это проблема нашего сервера. Мы используем Slicehost, и так получилось, что ряд ips, которые были в черном списке, включали наш собственный ip. Мы вычеркнули наше имя из списка, и мы готовы идти вперед.

0 голосов
/ 28 января 2010

На мгновение проигнорируйте весь его PHP-элемент.

Если это, например, сервер linux, отправьте письмо из командной строки, например, почта myemail@me.com

посмотрим, происходит ли то же самое таким образом. Скорее всего, это проблема конфигурации сервера, а не проблема php или cakePHP.

Посмотрите несколько основных моментов, например наличие полного доменного имени, и, возможно, посмотрите, как настроить записи SPF для вашей электронной почты. Убедитесь, что письма приходят от вашего доменного имени, а не от кого-то другого, например не пользователи по электронной почте.

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

Делайте все это, не трогая PHP, если там все идет хорошо, тогда настройте базовый скрипт php для отправки обычной электронной почты без использования CakePHP, если это работает нормально, тогда вы знаете его CakePHP и т. Д., Но я сомневаюсь в этом.

0 голосов
/ 28 января 2010

Может быть, вы можете установить PHPMailer в качестве поставщика и создать компонент под названием «Mail» ...

И не забудьте пройти аутентификацию на вашем SMTP-сервере ! :)

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