Carregando...< Voltar para post relacionado
Quem precisa desenvolver com PHP no Windows sempre enfrenta um pequeno probleminha: como fica o envio de emails? Nos Unix existem configurações adicionais do Sendmail, que facilitam muito a vida, mas no Windows isso não existe.
Uma solução paleativa é instalar um servidor de email (como o hMailServer), e testar na rede interna, usando um domínio falso para sua rede, e criando uma conta de email nele.
Mas a melhor solução eu achei nos comentários do PHP.net: usar o Fake Sendmail (licença BSD). Desenvolvindo originalmente para o Bugzilla pra Windows, com ele é possível usar suas contas e servidores reais de email, através de autenticação SMTP (se necessário). O Fake Sendmail também é usado pelos pacotes "tudo em um" como o XAMPP (Apache + MySQL + PHP).
Por exemplo, eu poderia configurar o PHP em minha máquina para usar um email pessoal do meu provedor para envio de emails pelo PHP.
Iniciando
Os passos foram tirados e adaptados do comentário original em PHP.net:
1 - Baixe o arquivo sendmail.zip de http://glob.com.au/sendmail/
2 - Descompacte para alguma pasta do Windows, mas de preferência com nomes curtos (como por exemplo C:\sendmail).
3 - Edite seu PHP.ini (no WAMP/XAMPP, acesse pelo menu próprio), e configure como abaixo (repare que vamos usar configurações do Sendmail nos Unix):
[mail function]
; For Win32 only.
;SMTP =
; For Win32 only.
;sendmail_from =
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\sendmail\sendmail.exe -t"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_paramaters =
4 - Salve suas alterações do PHP.ini.
5 - Agora abra o arquivo SENDMAIL.ini e edite os seguintes campos:
Pegue estas informações com seu provedor de email. No caso do Gmail, pegue as informações da seguinte página de ajuda: Gmail: Configurando o Outlook Express.
[sendmail]
; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.
smtp_server=smtp.yourdomain.com
; smtp port (normally 25)
; ATENÇÃO: PARA SSL É 465
; ATENÇÃO: PARA GMAIL É 587 (E APENAS COM SSL)!
smtp_port=25
; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify
default_domain=yourdomain.com
; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
; error_logfile=sendmail_error.log
; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
; debug_logfile=sendmail_debug.log
; if your smtp server requires authentication, modify the following two lines
;auth_username=
;auth_password=
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines
pop3_server=pop.yourdomain.com
pop3_username=you@yourdomain.com
pop3_password=mysecretpassword
; to force the sender to always be the following email address, uncomment and
; populate with a valid email address. this will only affect the "MAIL FROM"
; command, it won't modify the "From: " header of the message content
force_sender=you@yourdomain.com
; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting. you can manually set the ehlo/helo name if required
hostname=
6 - Reinicie o Apache
7 - Alguns serviços de email precisam de configuração para permitir o acesso POP3. No Gmail, por exemplo, execute os passos descritos em "Enabling POP".
Conclusão
Vimos como usar o Fake Sendmail para usarmos servidores externos de email no PHP rodando no Windows, simulando facilidades que existem no mundo Unix.
Opcionalmente, você pode habilitar os logs normais e de erro para tentar solucionar algum possível problema. Tente isso antes de me mandar um email, pois apenas com estas informações dos logs eu poderei te ajudar (mas geralmente as informações do log são suficientes para que você consiga resolver sozinho).
Atenção: Algumas pessoas tem tido dificuldade no envio de emails simplesmente porque alguns servidores requerem autenticação segura (SSL). Para isso, você precisa baixar a versão do sendmail com suporte a SSL (a página é a mesma da versão normal), e configurar as portas corretamente no SENDMAIL.ini.
Caso tenha notado algum erro, ou conhece algum modo melhor de fazer algo que descrevi, por favor, poste um comentário.