Почему электронная почта не отправляется через PHP, даже если она отправляется? - PullRequest
0 голосов
/ 02 апреля 2009

Я пытаюсь отправлять письма в PHP. Код, который я использовал для отправки почты в CakePHP , приведен ниже. Я получаю сообщение «Простая отправка электронной почты» на моей веб-странице, но почта не доставляется в мой почтовый ящик. Я что-то упустил?

Значения в полях to, subject и link устанавливаются со значениями, введенными в пользовательском интерфейсе.

    $this->set('to',$this->params['form']['to']);
    $this->set('subject',$this->params['form']['subject']);
    $this->set('link',$this->params['form']['link']);
    $this->Email->to      = to;
    $this->Email->subject = subject;
    $this->Email->from    = 'someperson@somedomain.com';
    $this->Email->delivery= 'mail';
    $this->Email->sendAs='text';
    $this->Email->template = 'simple_message';
    //$this->Email->send(link);
    if ( $this->Email->send(link) ) {

        $this->Session->setFlash('Simple email sent');
    } else {
        $this->Session->setFlash('Simple email not sent');
    }

Ответы [ 3 ]

2 голосов
/ 02 апреля 2009

В системе Linux у вас, вероятно, уже установлен скрипт sendmail, и PHP будет его использовать. Если это то, что у вас есть, и оно не работает, тогда я буду искать проблемы конфигурации почты в самой вашей системе Linux.

В системе Windows вам нужно настроить SMTP-сервер, на который вы хотите, чтобы PHP отправлял почту. Обычный способ сделать это в php.ini. Инструкции для этого здесь .

Если вы не установили Email-> delivery, это должно быть то же самое для CakePHP - по умолчанию должно использоваться то, что использует PHP.

Примечание. Если вы используете собственную установку Linux, возможно, ваш провайдер блокирует порт 25, который использует ваш почтовый сервер. В этом случае вам нужно настроить linux для маршрутизации электронной почты на почтовый сервер вашего провайдера. Может быть, это поможет?

1 голос
/ 02 апреля 2009

Вам необходимо использовать переменный синтаксис для установки строки 'to' и строки 'subject'. Эти строки должны читать

$this->Email->to      = to;
$this->Email->subject = subject;

Кроме того, я полагаю, что в компоненте Email есть атрибут error (в настоящее время я не могу найти его в документации), который поможет вам отладить. Это может быть не совсем правильно; Я использую компонент электронной почты с SMTP, и есть атрибут, который устанавливается компонентом электронной почты, который называется smtpError. Я считаю, что есть такой, который называется error, который вы можете использовать для проверки на наличие ошибок - он должен содержать код, который сообщит вам, в чем заключается ваша проблема.

Если это неверное утверждение, вы всегда можете сделать var_dump( $this->Email ); после того, как попытаетесь отправить электронное письмо. Это приведет к сбросу всего содержимого объекта, поэтому вы сможете увидеть, правильно ли вы установили атрибуты, и это поможет вам выяснить, как называется атрибут ошибки.

1 голос
/ 02 апреля 2009

С каких это пор «до» (строка 4) является действительным адресом электронной почты назначения?

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