php mail() não funcionar o windows 2003, o IIS SMTP
Pergunta
Eu estou ficando este problema:
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
a partir deste script:
<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";
if (mail($to, $subject, $body)){
echo "mail sent";
}
else {
echo "problem";
}
?>
seção de php.ini no servidor:
[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 =
(note que o "servidor" e "domínio" referem-se exatamente ao real do servidor e nome de domínio)
No IIS, o SMTP está em execução.Sob "Access"
guia "Relay"
botão, Selecione que computador pode retransmitir através deste servidor virtual é definido como checkbox "only the list below"
e a lista é "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).
O servidor está em execução Windows Server 2003 Service Pack 2
, totalmente patched como de 5 horas de 1º de Setembro de 2008.Eu suponho que ele está em execução IIS7
(como medir?).
Qualquer idéias?
Em resposta a Espo:Esta máquina é hospedado em um datacenter.Nós não queremos usar uma conta do gmail (estavam fazendo isso, pretende afastar-se de que).O Windows server 2003 vem com seu próprio servidor SMTP.
Atualização:Por Yaakov Ellis conselhos, eu deixei cair todas as restrições de retransmissão e adicionado o IP do servidor para a lista de permitidos (usando o DNS reverso botão fornecido) e a coisa começou a trabalhar.
Graças a Espo e Yaakov para me ajudando.
Solução
Tente remover as restrições de IP para a transmissão em que o servidor de SMTP e, abrindo-o a todos os relés.Se ele funciona quando esta estiver definida, então você sabe que o problema tem a ver com o original restrições.Neste caso, pode ser um problema de DNS, ou talvez você tinha errado o endereço IP listado.
Outras dicas
Você está usando errado servidor SMTP.Se você está indo só para enviar e-mails para o gmail-conta, de uma olhada na minha resposta aqui.
Se você também precisar enviar e-mails para outras contas, pedir-lhe PROVEDOR para a sua SMTP detalhes.
EDITAR:Eu acho que é sempre melhor usar o ISP SMTP-server como eles devem ter pessoas que acompanham o email filas, verificando a existência de explorações e atualizar o e-mail de software.Se o negócio é o desenvolvimento de aplicativos web é quase sempre melhor ficar com o que você faz, e deixar que outras pessoas façam suas coisas (por exemplo, executando servidores de email).
Se, ainda assim, por algum motivo, deseja usar o servidor SMTP local, a primeira coisa seria para afastar o php-parte.Tente seguir KB153119 e, em seguida, verifique você SMTPServer IISlog para erros.
EDIT2:Que base de dados de conhecimento artigo, diz que é para troca, mas mesmo comandos são usados para outros SMTP-servidores (incluindo IIS), bem como, então, por favor, tente e veja se você pode enviar e-mails usando os exemplos do artigo.
@Espo:Eu vou fazer o que re KB153119.Obrigado.
Sobre o servidor de correio:Eu ouço você.
Eu vou atualizar quando eu descobrir mais.
@Espo, o artigo em questão refere-se aos servidores do Exchange, não IIS7.0 servidor SMTP.
A partir do sumário:Este artigo descreve como telnet para a porta 25 em um computador que executa o Simple Mail Transfer Protocol (SMTP) de serviços para solucionar problemas de comunicação SMTP.As informações neste artigo, incluindo mensagens de erro se aplica somente a problemas ao tentar resolver problemas de comunicação SMTP do Microsoft Exchange baseada em servidores e não se destina para fins de solução de problemas gerais.
Eu tive o mesmo problema, php 5 no iis6, 2003 server.Php sempre falha quando tenta utilizar o mail().Eu consegui obtê-lo de aceitar correio do php alterando as Restrições de Retransmissão de 'Somente a lista abaixo (que é vazio por padrão) para 'Todos exceto a lista abaixo' .As restrições de retransmissão pode ser encontrado na guia Acesso a servidores de smtp propriedades telas.É claro que se o servidor está aberta para a internet, em seguida, um teria que ser mais sensato sobre estes retransmissão de restrições, mas no meu caso isso é em um servidor virtual em um dev caixa.
espero que ajude.