Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Estou com dúvida no curso de PHP, mysql e fundamentos da web - parte 2, no exercício do capítulo Envio de email via SMTP.

Não estou conseguindo enviar o email. O erro é o seguinte:

Erro ao enviar mensagem: SMTP Error: Could not connect to SMTP host.
<?php
session_start();
require_once("PHPMailerAutoload.php");
require_once("class.phpmailer.php");

$nome = $_POST['nome'];
$email = $_POST['email'];
$mensagem = $_POST['mensagem'];


$mail = new PHPMailer(true);

$mail->SMTPDebug = 2;
$mail->IsSMTP();

try {

    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->Username = "meuemail@gmail.com";
    $mail->Password = "minha senha";
    $mail->SMTPKeepAlive = true;
    $mail->CharSet = 'utf-8';


    $mail->setFrom("meuemail@gmail.com", "Site com envio de email");
    $mail->addAddress("meuemail@gmail.com", "Nome");

    $mail->isHTML(true);
    $mail->Subject = "Email de contato da loja";
    $mail->MsgHTML("<html>de: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");
    $mail->AltBody = "de: {$nome}\nemail:{$email}\nmensagem: {$mensagem}";

    if($mail->send()) {
        $_SESSION["success"] = "Mensagem enviada com sucesso";
        header("Location: index.php");
    } 

} catch (phpmailerException $e) {
    $_SESSION["danger"] = "Erro ao enviar mensagem: " . $e->errorMessage();
    header("Location: contato.php");
} catch (Exception $e) {
    $_SESSION["danger"] = "Erro ao enviar mensagem " . $e->ErrorInfo;
    header("Location: contato.php");
}
die();

Eu tentei fazer o teste de telnet no host e porta do programa e a mensagem é a seguinte:

220 mx.google.com ESMTP <um monte de caracteres> - gsmtp

Alguém poderia me ajudar? (estou utilizando W7, wampserver com Apacje 2.2.22 e PHP 5.3.13)

4 respostas
solução!

Consegui resolver. Para quem está com o mesmo problema segue a dica: Será necessário retirar o comentário de dois arquivos, o PHP.ini do PHP e o httpd.conf do Apache.

PHP.ini (retire o ';' que está no início das seguintes linhas):

...
extension=php_openssl.dll
...
extension=php_sockets.dll
...

httpd.conf (retire o '#' que está no inicio da seguinte linha):

LoadModule ssl_module modules/mod_ssl.so

Salve os arquivos e feche ambos, em sguida reinicie todos os serviços do Wampserver. Isso deve funcionar.

Bom dia Nilo,

Como você disse, o problema era que seu servidor não estava suportando conexões ssl. Via telnet o servidor do google respondia normalmente,

Att

Fiz isso, mas ainda aparece essa mensagem:

Erro ao enviar mensagem Extension missing: openssl

Bom dia João Pedro, tudo indica que você nnao esta com a extensão do openssl instalada.

Se está usando o composer (pela mensagem de erro, parece que sim), este link pode te ajudar:

http://stackoverflow.com/questions/25070912/install-composer-fails-with-the-openssl-extension-is-missing-error

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software