PHPMailer não pode enviar email

Meu projeto contém uma function para enviar e-mail, sendo PHPMailer . Funciona bem para enviar e-mails do meu servidor localhost, mas parou de enviar e-mails hoje e agora mostra essa mensagem de erro

 SMTP Error: Could not connect to SMTP host. 

Eu adicionei este código $mail->SMTPDebug = 1; para visualizar erros de debugging e agora está me mostrando esta mensagem:

 SMTP ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: The requested name is valid, but no data of the requested type was found. (0) SMTP Error: Could not connect to SMTP host 

Eu já enabled extension=php_openssl.dll em php.ini .

Este é o meu código:

 $mail = new PHPMailer(); $mail->SMTPSecure = 'ssl'; $mail->IsSMTP(); $mail->Username = "myemail@gmail.com"; // your GMail user name $mail->Password = "password"; $mail->AddAddress($email); // recipients email $mail->FromName = "username"; // readable name $mail->IsHTML(true); $mail->Subject = "title"; $mail->Body = " Message"; $mail->SMTPDebug = 1; $mail->Host = "ssl://smtp.gmail.com"; // GMail $mail->Port = 465; $mail->IsSMTP(); // use SMTP $mail->SMTPAuth = true; // turn on SMTP authentication $mail->From = $mail->Username; if($mail->Send()){ } else { } 

obrigado

Isso geralmente é relatado como um problema do PHPMailer (e há muitas duplicações desta questão), mas quase sempre é baixada a falha de DNS local, bloqueio de firewall ou outro problema de rede em sua rede local.

Primeiro, certifique-se de que está usando o PHPMailer mais recente .

Não use SSL na porta 465, está obsoleto desde 1998 e é usado apenas pelos produtos Microsoft que não receberam o memorando; use TLS na porta 587 em vez disso:

 $mail->SMTPSecure = 'tls'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; 

ou mais sucintamente:

 $mail->Host = 'tls://smtp.gmail.com:587'; 

Você pode conectividade isso executando alguns comandos no seu servidor (você precisará de pacotes dnsutils e telnet instalados). Primeiro o DNS está funcionando:

 dig +short smtp.gmail.com 

Você receberá algo assim se seu DNS estiver funcionando:

 gmail-smtp-msa.l.google.com. 173.194.67.108 173.194.67.109 

Em seguida, tente fazer telnet para o host na porta que você precisa:

 telnet smtp.gmail.com 587 

Isso deve dar-lhe algo como isto:

 Trying 173.194.67.109... Connected to gmail-smtp-msa.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP ex2sm16805587wjd.30 - gsmtp 

(Entre para quit para sair).

Se algum desses falhar, o PHPMailer também não funcionará . Então, corrija sua rede e tente novamente. Se você não tem controle de seu próprio firewall ou DNS, provavelmente você precisará levantar um ticket de suporte com seu ISP para corrigir isso. Se eles não corrigirem, você precisa replace seu ISP.

De volta ao PHPMailer, você pode obter feedback de nível inferior sobre a conexão configurando:

 $mail->SMTPDebug = 4;