PHPMailer отправка электронной почты без данных формы - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь отправить электронное письмо с контактной формой, но данные не отображаются. Я попробовал некоторые ответы здесь, но не могу заставить его работать.

Мой код:

<form class="form form-container method="post" action="assets/send_form_email.php">
    <div class="left">
      <input name="f_name" type="text" id="f_name" placeholder="Nome*" required />  
      <input name="f_email" type="email" id="f_email" placeholder="Email*" required />  
      <input name="f_phone" type="text" id="f_phone" required="required" maxlength="15"  placeholder="Telefone*" />  
      <textarea name="f_msg" id="f_msg" placeholder="Mensagem" rows="6"></textarea>  
    </div>

    <div class="right">
      <input name="f_cnpj" type="text" id="f_cnpj" placeholder="CNPJ" style="font-weight: 700;" required />  
      <input name="f_sector" type="text" id="f_sector" placeholder="Setor da empresa" style="font-weight: 700;" required />  
      <input name="f_faturamento" type="text" id="f_faturamento" placeholder="Faturamento médio" style="font-weight: 700;" required /> 
      <input name="f_valorMedio" type="text" id="f_valorMedio" placeholder="Valor médio de duplicatas" style="font-weight: 700;" required /> 
      <button type="submit" class="botaoContato">Enviar</button>
    </div>  
  </form>

Вот PHP:

<?php
$nome = $_POST['f_name'];
$email = $_POST['f_email'];
$telefone = $_POST['f_phone'];
$cnpj = $_POST['f_cnpj'];
$setor = $_POST["f_sector"];
$faturamento = $_POST['f_faturamento'];
$valorMedio = $_POST['f_valorMedio'];
$msg = $_POST["f_msg"];

$mensagem = "Nome: '.$nome.' <br> 
            Email: '$email.' <br> 
            Telefone: '.$telefone.' <br><br> 
            CNPJ: '.$cnpj.' <br> 
            Setor: '.$setor.' <br> 
            Faturamento: '.$faturamento.' <br> 
            Valor Medio: '.$valorMedio.' <br> 
            Mensagem: '.$msg.' <br>";

require_once("class.phpmailer.php");

$mail = new PHPMailer();
$mail->SMTPDebug = 2;

$mail->IsSMTP();
$mail->Host = "smtp.****.com.br";
$mail->SMTPAuth = true; 
$mail->Username = 'contato@****.com.br'; 
$mail->Password = '********'; 

$mail->From = "contato@*****.com.br"; 
$mail->Sender = "contato@****.com.br"; 
$mail->FromName = "****"; 

$mail->AddAddress('contato@*****.com.br');

$mail->IsHTML(true);
$mail->CharSet = 'UTF-8';

$mail->Subject = "Contato Site "; 
$mail->Body = $mensagem;
$mail->AltBody = $mensagem;

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();


if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.

";
echo "Informações do erro:
" . $mail->ErrorInfo;
}

Я пытался удалить переменные и добавить их непосредственно в $ mail-> Body, но это не работает. Я не знаю много PHP, поэтому я полагаюсь на сообщения здесь или некоторые учебники, но я не могу найти ошибку. (

1 Ответ

0 голосов
/ 13 сентября 2018

Самое важное, когда вы задаете такой вопрос, это точно описать , как не работает - мы не можем догадаться.

Прежде всего, вы используете очень старую версию PHPMailer, поэтому получает самую последнюю версию и основывает свой код на примере контактной формы, поставляемой с PHPMailer .

Вы отправляете только текстовое содержимое, так что сделайте это:

$mail->isHTML(false);
$mail->Body = $mensagem;

Вам не нужно устанавливать AltBody, когда вы делаете это.

Если ваше сообщение приходит, но не содержит ожидаемого, сделайте это непосредственно перед вызовом send(), чтобы подтвердить, какие параметры получил скрипт и что вы просили его отправить:

var_dump($_POST, $mail->Body);

У вас есть SMTPDebug = 2, поэтому вы должны увидеть отладочную информацию. Если вы получите false возвращаемое значение от send(), любая ошибка должна быть в $mail->ErrorInfo - вы увидите, как это можно использовать в примере кода, с которым я связан.

Если вы не видите вывода отладки SMTP, это означает, что у него вообще проблемы с подключением, и в этом случае вам следует прочитать руководство по устранению неполадок , в котором рассказывается, как диагностировать проблемы с подключением. Обычные причины: ваш хостинг-провайдер может блокировать исходящий SMTP или что у вас устаревшие сертификаты CA.

...