PHPMailer发送不带表单数据的电子邮件

时间:2018-09-13 02:59:20

标签: phpmailer

我正在尝试发送带有联系表的电子邮件,但是没有显示数据。 我在这里尝试了一些答案,但无法正常工作。

我的代码:

<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 :(得分:0)

当您问这样的问题时,最重要的事情是准确描述如何不起作用-我们无法猜测。

首先,您使用的是非常老版本的PHPMailer,因此get the latest,并将代码基于the contact form example provided with PHPMailer

您仅发送纯文本内容,因此,请执行以下操作:

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

执行此操作时无需设置AltBody

如果您的消息正在到达,但没有包含您的期望,请在致电send()之前确认脚本接收了哪些参数以及您希望发送的内容:

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

您有SMTPDebug = 2,因此您应该看到调试输出。如果您从false获得了send()的返回值,则任何错误都应该在$mail->ErrorInfo中-您将看到如何在我链接到的示例代码中使用它。

如果您没有看到SMTP调试输出,则表明它根本无法连接,在这种情况下,您应该阅读the troubleshooting guide,它告诉您如何诊断连接问题。通常的原因是您的托管服务提供商可能会阻止出站SMTP,或者您的CA证书已过期。