Отправка почты из PHP-скрипта приводит к ошибке - PullRequest
0 голосов
/ 03 февраля 2009

У меня есть скрипт, который раньше работал, но больше не работает.

Это сообщение отображается после запуска скрипта:

Array (
    [0] => Unrouteable address [1] => -All RCPT commands were rejected with this error:\\
    503-Unrouteable address 503 valid RCPT command must precede DATA
)
Array (
    [0] => Unrouteable address [1] => -All RCPT commands were rejected with this error:\\
    503-Unrouteable address 503 valid RCPT command must precede DATA
)
Array (
    [0] => Unrouteable address [1] => -All RCPT commands were rejected with this error:\\
    503-Unrouteable address 503 valid RCPT command must precede DATA
)

Фактическая функция:

function emailUser($table, $subject, $message) {
    $query = "SELECT * FROM $table";
    $result=mysql_query($query);

    while($row = mysql_fetch_array($result)) {
        $i = 0;

        while($i <= 0) {
            $to = $row['email'];
            $to_all .= '<li>'.$row['email'].'</li>';
            $mail = new htmlMimeMail();
            $mail->setHTML($message);
            $mail->setSubject($subject);
            $mail->setSMTPParams('mail.site.net', 25, 'site.net');
            $mail->setReturnPath("email@site.net");
            $mail->setFrom("email@site.net");

            $mail_result = $mail->send(array($to), 'smtp');

            if (!$mail_result) {
                    print_r($mail->errors);
                    //failure
                } else {
                    //success
                }
            $i++;
        }
    }
    print '<h3>Mail successuly sent to:</h3>';
    print '<ul>'.$to_all.'</ul>';
}

Есть ли лучший скрипт для использования? Может почтовый сервер изменился?

Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 03 февраля 2009

Вы уверены, что $ row ['email'] является правильным столбцом?

Кажется, ошибка указывает на то, что список получателей, которые получает функция, является подозрительным.

1 голос
/ 03 февраля 2009

Попробуйте изменить порядок следующим образом (setHTML находится в конце):

$mail->setSubject($subject);
$mail->setSMTPParams('mail.site.net', 25, 'site.net');
$mail->setReturnPath("email@site.net");
$mail->setFrom("email@site.net");
$mail->setHTML($message);
0 голосов
/ 03 февраля 2009

что это за класс htmlMimeMail, который вы используете? ты сам написал?

Это хорошая библиотека отправителей почты для PHP: SwiftMailer

Что касается причины, по которой он работал, а теперь нет, вероятно, изменилась конфигурация почтового сервера. Это ваш почтовый сервер? Или это ваш провайдер? Я подозреваю, что это изменило свое поведение из-за некоторого механизма предотвращения спама. Возможно, он отклоняет получателей SMTP RCPT, потому что, скажем, вы сначала не вошли в систему, используя некоторые средства (например, POP перед SMTP или аутентифицированный SMTP).

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