我正在尝试发送带有联系表的电子邮件,但是没有显示数据。 我在这里尝试了一些答案,但无法正常工作。
我的代码:
<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不太了解,所以我依赖这里的帖子或一些教程,但是找不到错误。 :(
答案 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证书已过期。