Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dica PHPMailer 6.0.0 com PHP 7

Pessoal, tive um pouco de dificuldade para enviar email utilizando o PHPMailer seguindo os passos da aula.

Percebi que existem algumas diferenças entre o conteúdo da aula e os exemplos básicos do PHPMailer 6.0.0 (versão mais atual no momento).

Eu adaptei o exemplo que tem no PHPMailer (https://github.com/PHPMailer/PHPMailer#a-simple-example) para atender o nosso propósito.

Estou rodando o projeto em PHP 7.1.8 em um Linux, então pode ser que existam algumas diferenças se vc estiver rodando em uma de PHP versão diferente como a 5.6.

Os arquivos do PHPMailer que estou utilizando são os seguintes: Exception.php OAuth.php PHPMailer.php POP3.php SMTP.php

Além disso, deixei todos esses arquivos em um diretório chamado vendors/phpMailer, por isso o require_once está dessa forma: 'vendors/phpMailer/

O arquivo envia-contato.php ficou assim:

<?php
session_start();
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

require_once 'vendors/phpMailer/PHPMailer.php';
require_once 'vendors/phpMailer/SMTP.php';
require_once 'vendors/phpMailer/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

$mail = new PHPMailer(true);
try {

     //Server settings
    $mail->SMTPDebug = 2;               
    $mail->isSMTP();                               
    $mail->Host = 'IP do servidor';  
    $mail->SMTPAuth = true;             
    $mail->Username = 'seu usuário';
    $mail->Password = 'sua senha';     
    $mail->SMTPSecure = 'tls';               
    $mail->Port = 587;                                 

    //Recipients
    $mail->setFrom('emaildeenvio@email.com', 'Mailer');
    $mail->addAddress('emaildeenvio@email.com', 'Joe User');  

    $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");
    } else {
        $_SESSION["danger"] = "Erro ao enviar mensagem " . $mail->ErrorInfo;
        header("Location: contato.php");
    }
} catch (Exception $e) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}
die();

Depois dessas alterações, o formulário começou a enviar as mensagens.

1 resposta
solução!

Opa, muito obrigado por compartilhar o conhecimento :).

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