PHP mail () no Windows: sem erros, o e-mail não é enviado
-
05-07-2019 - |
Pergunta
Atualmente estou tentando depurar um site baseado em Elgg (eu não desenvolvê-lo) e eu gostaria de enviar os e-mails diretamente da máquina de desenvolvimento local (WinXP). Estou correndo WAMP com Apache 2.2.11 e PHP 5.3.0
Depois de algumas pesquisas, a solução mais simples que eu me deparei está usando falso sendmail para enviá-lo para os meus aplicativos Gmail / Google conta via SMTP e deixá-lo fazer o envio. O problema é que eu recebo nenhum erro qualquer, mas o e-mail não está sendo enviado.
Aqui está o que eu fiz:
- copiou o sendmail.exe e sendmail.ini para uma subpasta em WAMP
- configurado via sendmail.ini (as definições de configuração estão ok)
- Editado php.ini para adicionar o caminho para sendmail.exe
sendmail_path = "C:\Program Files\wamp\bin\sendmail\sendmail.exe -t"
- comentadas as configurações de SMTP do Windows em php.ini
; SMTP = localhost
; smtp_port = 25
; sendmail_from = xxx@domain.com
; mail.force_extra_parameters =
Os autos mail.log o seguinte:
mail() on [C:\Program Files\wamp\www\mail.php:9]: To: xxx --
Headers: From: xxx Reply-To: xxx X-Mailer: PHP/5.3.0
Meu palpite é que o problema é que a opção padrão do Windows (para especificar o servidor e não o utilitário sendmail) não é anulado. Em phpinfo()
eu ainda obter as opções SMTP -> localhost
e smtp_port -> 25
, embora eu comentei-los.
Se alguém conseguiu obter esse trabalho, eu realmente aprecio alguma ajuda. Na minha opinião, usando falsa sendmail é muito mais simples do que instalar um servidor de correio na sua máquina.
Obrigado!
P.S. Por favor, não sugerem PHPMailer e similares, função porque eu Have a usar o mail (). Isso é como Elgg funciona.
Solução
Eu já chegou a funcionar eventualmente. O problema era que PHP tinha um bug na análise de arquivos ini com espaços no caminho (para sendmail). Ele foi corrigido na versão 5.3.0, mas o manual tinha nenhuma informação sobre isso.
Então, sim, é possível usar sendmail com PHP no Windows:. D
Obrigado a todos por seu tempo!
Outras dicas
Certifique-se de Serviço SMTP em execução na sua máquina local e que porta SMTP (25) é aberta.
Tenha um controlo sobre os serviços (Run-> services.msc) e olhar para a Transferência Send Mail
Se você não consegue encontrar SMTP na lista de serviços, você deve instalá-lo: Adicionar, Run-> appwiz.cpl-> Adicionar ou remover o Windows Componentes-> IIS-> Details-> SMTP
Eu não tenho certeza se isso ajuda ou não, o que eu costumava fazer nestes cenários foi a instalação, outlook na minha máquina e tê-lo configurado para receber e-mails do pop a cada 5 minutos ou assim, de que maneira o meu ip / máquina foi autenticado contra o pop e se eu apenas definir o:
SMTP = localhost
smtp_port = 25
no php.ini, a função mail funcionou bem. Assim, no seu caso, basta definir o Outlook para trabalhar com um pop e da utilização que smtp no php.ini e espero que ele deve funcionar. Eu ainda não testei isso vai GMail embora.
P.S. Por favor, não sugerem PHPMailer e similares, porque eu tenho que usar a função mail (). Isso é como Elgg funciona.
... a menos que você está usando um plugin que altera esse comportamento:
http://community.elgg.org/pg/plugins/costelloc/ leia / 16498 / phpmailer