O SMTP connect () falhou quando o pedido veio do navegador

1

Eu tenho um script PHP que envia e-mail usando a biblioteca PHPMailer. Quando executo o script no SSH usando o comando PHP, ele envia e-mail perfeitamente. Mas quando o pedido para o mesmo script é proveniente de um navegador, ele está falhando e dando erro abaixo.

2016-12-17 19:41:24 SMTP ERROR: Failed to connect to server: (0) 2016-12-17 19:41:24    SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting error

Não sei ao certo se o que está causando isso não funciona para solicitações do navegador.

Meu script está na AWS e estou usando o e-mail comercial do google.

Abaixo está meu trecho de código.

require_once 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->CharSet = "text/html; charset=UTF-8;";
$mail->SMTPDebug = 2;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; 
$mail->Username = "google email address";  
$mail->Password = "password";
$mail->From = $email_from;
$mail->FromName = "Name";
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body    = $message;
$sent = $mail->Send();

Eu apreciarei qualquer ajuda. Obrigado.

EDITED: Consegui resolver o problema "Módulo 'curl' já carregado em Desconhecido na linha 0". Havia dois arquivos PHP.ini no servidor que estavam causando o problema. Renomear um PHP.ini resolveu o problema de curl loaded.

Mas ainda não consigo enviar e-mails usando nenhum usuário. No entanto, posso enviar e-mail usando o usuário root.

Eu notei uma configuração no WHM para "Impedir que" ninguém "envie mensagens". Por padrão, significava que ninguém tem permissão para enviar e-mails. Então, se eu desligar, devo enviar e-mails usando ninguém. Mas não tenho certeza porque depois de desligá-lo ainda não consigo enviar e-mail usando ninguém usuário.

EDITED: Quando eu verifiquei os logs do servidor do Apache, descobri que o erro abaixo está sendo gerado para cada solicitação proveniente do navegador. Não tenho certeza do que é esse erro. Eu estou fazendo pesquisas sobre isso. Eu apreciarei se alguém estiver ciente do problema. Obrigado! ****************** REGISTROS DE ERROS ****************************** * [Ter Dez 20 12: 38: 45.875892 2016] [ssl: erro] [pid 913] (101) A rede está inacessível: [cliente xx.xx.xx.xx: 151] AH01974: não foi possível conectar-se ao OCSP respondedor 'ocsp. comodoca.com ' [Ter Dez 20 12: 38: 45.875929 2016] [ssl: erro] [pid 913] AH01941: stapling_renew_response: erro de resposta [Ter Dec 20 12: 38: 46.181171 2016] [ssl: erro] [pid 919] (101) A rede está inacessível: [cliente xx.xx.xx.xx: 848] AH01974: não foi possível conectar-se ao OCSP respondedor 'ocsp. comodoca.com ' [Ter Dez 20 12: 38: 46.181211 2016] [ssl: erro] [pid 919] AH01941: stapling_renew_response: erro de resposta

Obrigado pela sua ajuda!

    
por user_387909 17.12.2016 / 21:12

2 respostas

1

Por fim, consegui enviar e-mails por nenhum usuário no meu Cent OS. Eu tive que editar duas configurações do WHM.

Caminho para alterar as configurações.

WHM - > Configuração do servidor - > Configurações Tweak - > Na guia "E-mail"

Por padrão, abaixo de duas configurações estava Ativado. Quando eu os desliguei, ele me permitiu enviar e-mails de ninguém.

  1. Restrinja o SMTP de saída para root, exim e mailman (FKA SMTP Tweak)

  2. Impedir que "ninguém" envie mensagens

Espero que alguém possa se beneficiar com isso. Atenciosamente!

    
por 20.12.2016 / 14:32
1

Você está executando o php como root sobre o ssh? Ou outro usuário que tenha permissões mais altas que o servidor web?

Se você souber em que usuário o servidor da Web está sendo executado, tente executar o script php como esse usuário. Você pode usar phpinfo() para descobrir com qual usuário está sendo executado. Uma maneira de executar um script como esse usuário é a seguinte ... Primeiro seja root, ou um usuário que possa fazer sudo , e digite o seguinte, para mudar para o usuário do servidor web:

sudo -u www-data bash

Obviamente, substitua www-data pelo nome do usuário do servidor da web, se for diferente, e bash com um shell válido no seu servidor, se você não tiver o bash. Uma que você tenha o prompt bash do usuário do servidor web, execute id para verificar se você é realmente o usuário certo, e então tente executar seu script PHP a partir da linha de comando do usuário. Se der o mesmo erro, então deve ser o problema de permissões. Se funcionar, pelo menos você descartou isso!

Se parecer ser um problema de permissão, tente o seguinte:

sudo setsebool -P httpd_can_sendmail 1
sudo setsebool -P httpd_can_network_connect 1

Para ativar a permissão.

    
por 17.12.2016 / 22:26