Filling sender with email field - PHP Mailer

Asked

Viewed 916 times

-1

I am using PHP Mailer to send the contact form I have on my site, I wonder if there is any way in which the contact is sent already with the email address filled in the form email field as sender, to facilitate at the time when I will give the answer to the customer?

<?php
header('Content-Type: application/json');
date_default_timezone_set('America/Sao_Paulo');

require('class/class.phpmailer.php');

$mail = new PHPMailer();

// Define que a mensagem será SMTP

$mail->IsSMTP();

$mail->Port = 111;

// Host do servidor SMTP

$mail->Host = 'teste.smtp.teste';

// Autenticação | True

$mail->SMTPAuth = true;

$mail->SMTPSecure = false; // Define se é utilizado SSL/TLS - Mantenha o valor "false"
$mail->SMTPAutoTLS = false; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"

// Usuário do servidor SMTP

$mail->Username = '[email protected]';

// Senha da caixa postal utilizada

$mail->Password = '12345';

// Para quem será enviado

$mail->From = $mail->Username;
$mail->FromName = 'Nome De Quem Esta Enviando';
$mail->AddCC('[email protected]', 'Fulano');


// Define que o e-mail será enviado como HTML | True

$mail->IsHTML(true);

// Charset da mensagem (opcional)

$mail->CharSet = 'utf-8';

// Assunto da mensagem

$mail->Subject = 'OBA! Chegou novo contato do site.';

// Conteúdo no corpo da mensagem

$mail->Body = '
  <table>
    <tr>
      <p>Cliente solicitando contato através do formulário do site.</p>
    </tr>
    <tr>
      <td>Nome: </td>
      <td>' . $_POST['nome'] . '</td>
    </tr>
    <tr>
      <td>Email: </td>
      <td>' . $_POST['email'] . '</td>
    </tr>
    <tr>
      <td>Telefone: </td>
      <td>' . $_POST['fone'] . '</td>
    </tr>
    <tr>
      <td>Cidade do Cliente: </td>
      <td>' . $_POST['cidade'] . '</td>
    </tr>
    <tr>
      <td>Atividade Escolhida: </td>
      <td>' . $_POST['atividade'] . '</td>
    </tr>
    <tr>
      <td>Mensagem: </td>
      <td>' . $_POST['msgcontato'] . '</td>
    </tr>
  </table>
';

// Conteúdo no corpo da mensagem(texto plano)

$mail->AltBody = '
  Cliente solicitando contato através do formulário do site
  Nome: ' . $_POST['nome'] . ',
  Email: ' . $_POST['email'] . ',
  Telefone: ' . $_POST['fone'] . ',
  Cidade: ' . $_POST['cidade'] . ',
  Atividade Escolhida: ' . $_POST['atividade'] . ',
  Mensagem: ' . $_POST['msgcontato'] . '
';

//Envio da Mensagem

$enviado = $mail->Send();

$mail->ClearAllRecipients();

if ($enviado) {
  echo json_encode([
    'ok' => true, 
    'msg' => 'E-mail enviado com sucesso!'
  ]);  
} else {
  echo json_encode([
    'ok' => false, 
    'msg' => 'Não foi possível enviar o e-mail.', 
    'debug' => 'Motivo do erro: ' . $mail->ErrorInfo
  ]);  
}
?>
  • $mail->Sender = '[email protected]';

  • but I can pass a variable in Sender?

  • You managed to tie a knot with this question of yours. Who is using the form to send email? You to the user or the user to you?

  • @Leocaracciolo changed account... I’m sorry for the bullshit, I don’t quite know how it works... But it is the user who fills in and the data is sent to me, hence the email he fills in I want to use as reply email, currently I have to pick up the filled email in the body of the message and then create an email and fill in manually

  • replaces $mail->From = $mail->Username;for $mail->From = $_POST['email']; and replaces $mail->FromName = 'Nome De Quem Esta Enviando'; by $mail->Fromname = '$_POST['name']';

1 answer

1

Replace

$mail->From = $mail->Username;
$mail->FromName = 'Nome De Quem Esta Enviando';

for

//quem está enviando para você
$mail->From = $_POST['email'];
$mail->FromName = $_POST['nome'];



Upgrade to Phpmailer 6

Phpmailer 6 was released at the end of August 2017, bringing numerous news and improvements over version 5.

The Phpmailer library can be downloaded from its official website Github - Phpmailer

Unzip and publish to an example server folder mailer.

php file, for example PHPMailerForm.php, publish in the same folder as the downloaded and unzipped files mailer.

Example - Structure:

It is not necessary to publish all the unzipped files and folders, just the ones indicated in the figure below

diretorio

PHP file

/******* CODIGO EMAIL *******/

//Essa condição você faz do jeito que achar melhor
if ((isset($_POST['$email']))&&(!empty($_POST['$email']))){

   //método POST
   $nome= isset($_POST["nome"])?$_POST["nome"]:"[Não Informado]";
   $email= isset($_POST["email"])?$_POST["email"]:"[Não Informado]";
   //outros $_POST vindos do formulário

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

    // Inclui os arquivo localizados na pasta src
    require_once 'src/Exception.php';
    require_once 'src/PHPMailer.php';
    require_once 'src/SMTP.php';

    // Inicia a classe PHPMailer
    $mail = new PHPMailer(true); 

    try {
        // Configurações do servidor
        $mail->SMTPDebug = 0; 
        $mail->isSMTP();                                      
        $mail->Host = 'smtp.dominio.com';          // Endereço do servidor SMTP
        $mail->SMTPAuth = true;                   // autenticação SMTP
        $mail->Username = '[email protected]';     // Usuário do servidor SMTP
        $mail->Password = 'secreta';            // Senha da caixa postal utilizada
        $mail->SMTPSecure = 'tls';             // Ativar criptografia TLS, `ssl` também é aceita
        $mail->Port = 587;                    // TCP port to connect to

        // Define o remetente   
        $mail->setFrom($email, $nome);    // email e nome do remetente


        // Define o(s) destinatário(s)
        $mail->addAddress('[email protected]', 'Nome destinatario');

        // Destinatários abaixo são opcionais 
        //$mail->addAddress('[email protected]');                    // outro destinatario
        //$mail->addReplyTo($email, $nome);                        //aqui você coloca o endereço de quem está enviando a mensagem pela sua página
        //$mail->addCC('[email protected]');                          // Copia
        //$mail->addBCC('[email protected]');                        // Copia oculta

        //Anexos
        //$mail->addAttachment('/var/tmp/file.tar.gz');         // Adicionar um anexo
        //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');   // Nome opcional

        //Content
        $mail->isHTML(true);                                 // true define que o e-mail será enviado como HTML, se false, desativa
        $mail->Subject = 'Digite a assunto aqui';           // Assunto da mensagem

        //Define o corpo do email

        $mail->Body = '
          <table>
            <tr>
              <p>Cliente solicitando contato através do formulário do site.</p>
            </tr>
            <tr>
              <td>Nome: </td>
              <td>' . $_POST['nome'] . '</td>
            </tr>
            <tr>
              <td>Email: </td>
              <td>' . $_POST['email'] . '</td>
            </tr>
            <tr>
              <td>Telefone: </td>
              <td>' . $_POST['fone'] . '</td>
            </tr>
            <tr>
              <td>Cidade do Cliente: </td>
              <td>' . $_POST['cidade'] . '</td>
            </tr>
            <tr>
              <td>Atividade Escolhida: </td>
              <td>' . $_POST['atividade'] . '</td>
            </tr>
            <tr>
              <td>Mensagem: </td>
              <td>' . $_POST['msgcontato'] . '</td>
            </tr>
          </table>
        ';


        $mail->send();
        echo 'E-mail enviado com sucesso!';
    //caso apresente algum erro é apresentado abaixo com essa exceção.
    } catch (Exception $e) {
        echo 'Não foi possível enviar o e-mail.;
        echo 'Erro do Mailer: ' . $mail->ErrorInfo;   //Mensagem de erro do PHPMailer
    }

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.