簡體   English   中英

PHPMailer 發送沒有表單數據的電子郵件

[英]PHPMailer sending e-mail without form data

我正在嘗試發送帶有聯系表格的電子郵件,但它沒有顯示數據。 我在這里嘗試了一些答案,但無法使其正常工作。

我的代碼:

<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,所以我依賴這里的帖子或一些教程,但我找不到錯誤。 :(

當您提出這樣的問題時,最重要的事情是准確描述它是如何不起作用的 - 我們無法猜測。

首先,您使用的是非常舊版本的 PHPMailer,因此請獲取最新版本,並將您的代碼基於PHPMailer 提供的聯系表單示例

您僅發送純文本內容,因此請執行以下操作:

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

執行此AltBody時無需設置AltBody

如果您的消息到達,但不包含您期望的內容,請在調用send()之前執行此操作以確認腳本接收到哪些參數以及您要求它發送的內容:

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

你有SMTPDebug = 2 ,所以你應該看到調試輸出。 如果你從send()得到一個false返回值,任何錯誤都應該在$mail->ErrorInfo ——你會看到如何在我鏈接到的示例代碼中使用它。

如果您沒有看到 SMTP 調試輸出,則意味着它根本無法連接,在這種情況下,您應該閱讀故障排除指南該指南告訴您如何診斷連接問題。 通常的原因是您的托管服務提供商可能會阻止出站 SMTP,或者您的 CA 證書已過期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM