Mail() não utiliza endereço SMTP - php.ini

1. Mail() não utiliza endereço SMTP - php.ini

Henri Azevedo
azevedohenri

(usa Debian)

Enviado em 15/11/2017 - 10:35h

Bom dia

Estou desenvolvendo uma aplicação web para servir de intranet para a empresa em que trabalho, estou tentando implementar um serviço de recuperação de senha por email.
No começo do desenvolvimento eu utilizava minha máquina Windows 7 com o vertrigo, a função mail() estava funcionando normalmente, o único ajuste que eu estava fazendo é o endereço do servidor SMTP, que no da minha empresa é 192.168.195.147, fora isso utilizava um email de exemplo do meu domínio local para enviar os email.

Quando passei para o servidor Debian o serviço de email já não funciona, inicialmente eu estava utilizando a função
ini_set('SMTP','192.168.195.147'); 
no Windows, mas como no Debian não funcionou eu resolvi colocar o IP diretamente no php.ini, mesmo assim não está funcionando, o chato é que o retorno da função mail() é true, como se o email fosse enviado.

Eu testei colocando um IP errado no SMTP tanto via php quanto diretamente no php.ini mas mesmo assim retorna true, eu verifiquei quais eram as diferenças do
phpinfo() 
nos dois ambientes e só achei o sendmail_path diferente, que no Windows está sem valor e no Debian está
/usr/sbin/sendmail -t 
que é padrão, eu tentei setar como vazio e mesmo assim não faz diferença, retorna true, tambem tentei utilizar a função mail() passando um parâmetro adicional com o email do remetente com
$send = mail($to, $subject, $message, $headers,'-f'.$to); 
, mesmo assim retornando true e nada do email, eu tambem instalei o php-mail e sei no sendmail_path e só ai retorna false, mas mesmo assim não sei como corrigir este problema.

O código que estou utilizando para enviar email é o seguinte:


$from = 'intranet@dominio.com.br';
$to = $user->get('email');
$subject = 'Intranet ADL - Redefinição de senha';
//Mensagem em html
$style = '<style>';
$style.= 'body{font-family:"Open Sans",sans-serif;background-image:url(http://eros/images/background.jpg);}';
$style.= 'h1{font-weight:100;border-bottom:solid 2px black;padding-bottom:1em;padding-top:.5em;margin-bottom:0;position:relative}';
$style.= 'img{position:absolute;right:1em;top:-8px;}';
$style.= 'div.content{margin-top:1em;padding:1em;background:white;width:90%;margin-left:5%;border:solid 1px LightGrey}';
$style.= 'a.html{text-decoration:none;border:solid 1px #007FFF;width:130px;background:#007FFF;color:white;text-align:center;padding:8px;text-transform:uppercase;font-weight:bold;font-size:.8em;margin-top:1em;margin-bottom:1em;display:block}';
$style.= 'p{font-size:.85em;color:grey;}';
$style.= '</style>';
$message = '<html>';
$message .= '<head>';
$message .= $style;
$message .= '</head>';
$message .= '<body> ';
$message .= ' <div class="content">';
$message .= ' <h1>Intranet ADL<img src=\'http://eros/images/logo.png\'></h1>';
$message .= ' <p>Olá '.$user->get('nome').',</p>';
$message .= ' <p>Foi solicitado uma recuperação de senha da sua conta na IntranetADL, caso não tenha sido solicitado por você descarte está mensagem.</p>';
$message .= ' <p>Caso você necessite recuperar sua senha clique no botão abaixo para criar uma nova senha.</p>';
$message .= ' <a class=\'html\' href=\'http://eros/adl/admin/redefinir_senha/'.$user->get('token').'\'>Alterar senha</a>';
$message .= ' </div>';
$message .= '</body>';
$message .= '</html>';
//Header do email
$headers = 'MIME-Version: 1.1'.PHP_EOL;
$headers.= 'From:'. $from.PHP_EOL;
$headers.= 'Content-type: text/html; charset=UTF-8;'. PHP_EOL ;
$send = mail($to, $subject, $message, $headers);
if(!$send) throw new Exception('Ocorreu algum erro ao tentar enviar um email para a redifinição de senha.', 13);



  


2. Re: Mail() não utiliza endereço SMTP - php.ini

Oberaldo Büll Júnior
spylinux

(usa Manjaro Linux)

Enviado em 15/11/2017 - 13:00h

Qual versão do PHP vc usava no Windows com Vertrigo e qual usa atualmente com Debian?

Vc atualizou seus códigos fontes de acordo com a versão do PHP?

Pq não usa uma classe como PHPMailer ou SwiftMailer para fazer o envio por SMTP autenticado?

[]'s spylinux
Talk is cheap. Show me the code.


3. Re: Mail() não utiliza endereço SMTP - php.ini

Henri Azevedo
azevedohenri

(usa Debian)

Enviado em 15/11/2017 - 13:09h

spylinux escreveu:

Qual versão do PHP vc usava no Windows com Vertrigo e qual usa atualmente com Debian?

Vc atualizou seus códigos fontes de acordo com a versão do PHP?

Pq não usa uma classe como PHPMailer ou SwiftMailer para fazer o envio por SMTP autenticado?

[]'s spylinux
Talk is cheap. Show me the code.


Em ambos os sistemas a versão é a 5.6.30.

Como é a mesma versão não há o que atualizar, eu cheguei a alterar o nome da pasta padrão que no Windows estava como public_html para somente html que vem por padrão no Debian, fora isso nada muda.

Não utilizo nenhuma classe externa pois o envio é somente local, não precisaria de autenticação ou alguma outra configuração como usuário e senha. Com isso busco simplicidade numa coisa que tambem deveria continuar simples.


4. @azevedohenri vamos lá

Rodrigo Kulb
RodrigoKulb

(usa Ubuntu)

Enviado em 20/01/2018 - 19:48h

Olá Azevedo, uma pergunta besta, mas já aconteceu comigo, se o seu servidor não estiver com o sendmail instalado realmente ele não vai enviar o e-mail.

# sudo apt-get install sendmail


Espero ter ajudado!

------------------------------------
Se inscreva no meu canal do Youtube Rodrigo Kulb PHP
https://www.youtube.com/user/rodrigoKulb
------------------------------------






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts