Вопрос

У меня возникла эта проблема:

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for chris.mahan@gmail.com in c:\inetpub\wwwroot\mailtest.php on line 12 

из этого скрипта:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

if (mail($to, $subject, $body)){
    echo "mail sent";
}
else {
    echo "problem";
}
?>

раздел из php.ini на сервере:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(обратите внимание, что "сервер" и "домен" точно относятся к фактическому серверу и доменному имени)

В IIS запущен протокол SMTP.Под "Access" вкладка, "Relay" кнопка Выбора компьютеров, которые могут ретранслировать данные через этот виртуальный сервер, установлена на checkbox "only the list below" и в этом списке есть "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

Сервер запущен Windows Server 2003 Service Pack 2, полностью исправлено по состоянию на 17:00 1 сентября 2008 года.Я предполагаю, что он запущен IIS7 (как проверить?).

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

В ответ на Всто:Этот компьютер размещен в центре обработки данных.Мы не хотим использовать учетную запись gmail (делали это, хотим отойти от этого).Windows server 2003 поставляется со своим собственным SMTP-сервером.

Обновить:По совету Яакова Эллиса я снял все ограничения на ретрансляцию и добавил IP-адрес сервера в список разрешенных (используя предоставленную кнопку обратного DNS), и все заработало.

Спасибо Всто и Яакову за то, что помогли мне.

Это было полезно?

Решение

Попробуйте снять ограничения IP для ретрансляции на SMTP-сервере и открыть его для всех реле. Если это работает, когда это установлено, то вы знаете, что проблема связана с первоначальными ограничениями. В этом случае это может быть проблема DNS или, возможно, вы указали неправильный IP-адрес.

Другие советы

Вы используете неправильный SMTP-сервер.Если вы собираетесь отправлять электронные письма только в свой аккаунт gmail, взгляните на мой ответ здесь.

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

Редактировать:Я думаю, что всегда лучше использовать SMTP-сервер провайдера, поскольку у них (должны) быть люди, отслеживающие почтовые очереди, проверяющие наличие эксплойтов и обновляющие почтовое программное обеспечение.Если ваш бизнес занимается разработкой веб-приложений, почти всегда лучше придерживаться того, что делаете вы, и позволить другим людям делать свое дело (например, запускать почтовые серверы).

Если вы все еще по какой-то причине хотите использовать свой локальный SMTP-сервер, первым делом следует исключить php-часть.Попробуйте следовать КБ153119 а затем проверьте свой SMTPServer IISlog на наличие ошибок.

РЕДАКТИРОВАТЬ 2:В этой статье KB говорится, что она предназначена для exchange, но те же команды используются и для других SMTP-серверов (включая IIS), поэтому, пожалуйста, попробуйте и посмотрите, сможете ли вы отправлять письма, используя примеры из статьи.

@Espo: я сделаю это KB153119. Спасибо.

О почтовом сервере: я вас слышу.

Я обновлюсь, когда узнаю больше.

@Espo, данная статья касается серверов Exchange, а не SMTP-сервера IIS7.0.

Из краткого обзора. В этой статье описывается, как подключиться к порту 25 на компьютере, на котором запущены службы SMTP, для устранения неполадок со связью SMTP. Сведения в этой статье, включая сообщения об ошибках, относятся только к проблемам при попытке решить проблемы связи SMTP с серверами Microsoft Exchange и не предназначены для общих целей устранения неполадок.

У меня была такая же проблема, php 5 на сервере iis6, 2003. Php всегда терпел неудачу при попытке использовать mail (). Мне удалось получить прием почты от php, изменив ограничения ретрансляции с «Только список ниже» (который по умолчанию пуст) на «Все, кроме списка ниже». Ограничения ретрансляции можно найти на вкладке «Доступ» на экранах свойств серверов smtp. Конечно, если сервер открыт для интернета, то нужно было бы более разумно относиться к этим ограничениям ретрансляции, но в моем случае это виртуальный сервер на устройстве разработчика.

надеюсь, что это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top