Implement form, causing the message to be sent directly to my email

Asked

Viewed 477 times

2

I have a contact form on my website. It picks up information like name, email, phone and message. However, this data is displayed only in the administration panel of the site itself. I would like that at the time of contact the code took the e-mail informed by the user and sent a direct message to my email!

I tried to use the mail function, but I’m not getting any success! How to do this then?!

I used someone:: Such as

first.::

<?php
    $nome     = $_POST['nome'];     echo $nome; echo "<br>";
    $email    = $_POST['email'];    echo $email; echo "<br>";
    $mensagem = $_POST['mensagem']; echo $mensagem; echo "<br>";
    $corpo  = "Nome: ".$nome."<BR>\n";
    $corpo .= "Email: ".$email."<BR>\n";
    $corpo .= "Mensagem: ".$mensagem."<BR>\n";
    if(mail("[email protected]","Assunto",$corpo)){
      echo("email enviado com sucesso");
    } else {
      echo("Erro ao enviar e-mail");
    }
?>

In this example, it simply returns "error sending email", without further details.

2.::

<?php
    $email_remetente = "[email protected]";
    $headers = "MIME-Version: 1.1\n";
    $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
    $headers .= "From: $email_remetente\n"; // remetente
    $headers .= "Return-Path: $email_remetente\n"; // return-path
    $headers .= "Reply-To: $email_usuario\n"; // Endereço (devidamente validado) que o seu usuário informou no contato
    $envio = mail("[email protected]", "Assunto", "Mensagem", $headers, "-f$email_remetente");
?>

The recipient will always be the same - my email - the one that will actually change will always be the subject, message and sender.

  • 1

    Is it possible to add the code with your attempt to question? So it’s easier for us to help with a solution.

  • The localhost email server has been configured?

1 answer

2


I use the Smtpmailer class for this purpose (it is necessary at least one GMAIL for this since we will use your SMTP server) I am putting some methods that make use of this class (all documented).

Link to Phpmailer download: http://phpmailer.worxware.com/

    /**
    *String que armazena o email de onde partirá os emails (remetente).
    *@var string
    */
    const GUSER = 'email';

    /**
    *String que armazena a senha do email de onde partirá os emails (remetente).
    *@var string
    */
    const GPWD = 'senha';

    /**
    *String que armazena o email para qual as mensagens serão enviadas (destinatário).
    *@var string
    */
    const GSEND = 'teste';


   static function contactUsEmail(){

        $emailRemetente = $_POST['email'];
        $name = $_POST['name'];
        $subject = $_POST['subject'];
        $mensagem = $_POST["message"];
        $corpoMensagem = '<b>CONCTACT US EMAIL</b>'.'<br /><b>Email Remetente: </b>'.$emailRemetente.
        '<br /><b>Nome:</b>'.$name.'<br /><b>Assunto:</b>'.$subject.'<br /><b>Mensagem:</b>'.$mensagem;

        $sendResult = SendEmail::smtpMailer(SendEmail::GSEND, SendEmail::GUSER, $name, $subject, $corpoMensagem);

        if($sendResult === true){
             echo 'Mensagem Enviada com Sucesso';
        }else{
            echo $sendResult;
        }
    }

    function smtpMailer($destinatario, $remetente, $nomeRemetente, $assunto, $corpo){

        /*
        *Objeto que realizará a composição do email com os dados passados como parametros, 
        *armazenara as configurações do servidor SMTP utilizado e todas as outras configurações 
        *e realizará o envio do email.
        *@var PHPMailer object
        */
        $mail = new PHPMailer();

        /**
        *Define o charset do email a ser enviado.
        */
        $mail->CharSet = 'UTF-8';

        /**
        *Ativa SMTP para uso.
        */
        $mail->IsSMTP();

        /**
        *Não exibirá erros e mensagens, outras configurações possiveis: 
        *Debugar: 1 = erros e mensagens, 2 = mensagens apenas.
        */
        $mail->SMTPDebug = 0;

        /**
        *Ativa a autenticação.
        */
        $mail->SMTPAuth = true;

        /**
        *Protocolo utilizado, o gmail (servidor utilizado) requere o uso de tls.
        */
        $mail->SMTPSecure = 'tls';

        /**
        *SMTP utilizado
        */
        $mail->Host = 'smtp.gmail.com';

        /**
        *Porta utilizado para envio de mensagens (ela deverá estar aberta em seu servidor).
        */
        $mail->Port = 587;

        /**
        *Login do usuário utilizado para envio do email (no caso usuário comum do gmail).
        */
        $mail->Username = SendEmail::GUSER;

        /**
        *Senha do login de usuário utilizado para envio do email.
        */
        $mail->Password = SendEmail::GPWD;

        /**
        *Identificação do remetente do email (usuário de email utilizado para envio do 
        *email pelo sistema (logo de propriedade do sistema) e o nome do usuário remetente 
        *(informado na hora da criação do email)) do email.
        */
        $mail->SetFrom($remetente, $nomeRemetente);

        /**
        *Assunto do email.
        */
        $mail->Subject = $assunto;

        /**
        *Corpo do email.
        */
        $mail->Body = $corpo;

        /**
        *Email destinatário do email (de propriedade do sistema).
        */
        $mail->AddAddress($destinatario);

        /**
        *Seta o email como HTML (por padrão ele é text/plain).
        */
        $mail->IsHTML(true);

        $sendResult = $mail->Send();

        if(!$sendResult){
            return "<b>Informações do erro:</b> " . $mail->ErrorInfo;
        }else{
            return true;
        }
    }
  • just one more question @Ricardo Henrique! I’m developing the script on my server! But it’s not right! Now if I test the direct script on the server I will definitely use it! Oh it works! You would know tell me why?

  • I do not know exactly why this problem but I have a few chances: 1st Door 587 is not open and free. 2º There may be a firewall halfway through.

Browser other questions tagged

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