【问题标题】:Textarea data not being sent via POST on PHPMailer文本区域数据未通过 PHPMailer 上的 POST 发送
【发布时间】:2015-09-18 20:15:21
【问题描述】:

我的网站上有一个表单,除了未在电子邮件中发送的 textarea 数据外,该表单正在运行。该表格允许人们输入姓名、电子邮件和消息。我收到了电子邮件,我得到了姓名和电子邮件,但“消息”区域是空白的。

我什至尝试将 textarea 更改为输入字段,但甚至没有在电子邮件中发送?我不知道为什么这不起作用。谁能帮忙。

下面是 HTML 表单代码以及 PHP 邮件。

HTML

<form enctype="multipart/form-data" method="post" action="php/mail.php" name="cform" id="cform">
    <input name="name" id="name" type="text" class="col-xs-12 col-sm-6 col-md-6 col-lg-6" placeholder="Your name..." >
    <input name="email" id="email" type="email" class="col-xs-12 col-sm-6 col-md-6 col-lg-6 noMarr" placeholder="Your email..." >
    <textarea name="message" id="message" type="text" cols="40" rows="5" class="col-xs-12 col-sm-12 col-md-12 col-lg-12" placeholder="Your message..."></textarea>
    <input type="submit" id="submit" name="send" class="submitBnt" value="Send Message">
</form>

PHP

<?
    require("class.phpmailer.php");

    // form validation vars
    $formok = true;
    $errors = array();

    // sumbission data
    $ipaddress = $_SERVER['REMOTE_ADDR'];
    $date = date('d/m/Y');
    $time = date('H:i:s');

    // form data
    $name = $_POST['name']; 
    $email = $_POST['email'];
    $message = $_POST['message'];

    $mail = new PHPMailer();

    $mail->IsSMTP(); // send via SMTP - mail or smtp.domain.com
    $mail->Host     = "myserver"; // SMTP servers
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "myUsername"; // SMTP username
    $mail->Password = "myPassword"; // SMTP password
    $mail->From     = "myEmail@Address.com"; // SMTP username
    $mail->AddAddress("myEmail@Address.com"); // Your Adress
    $mail->Subject  =  "New contact request from My Website !";
    $mail->IsHTML(true);  
    $mail->CharSet  = 'UTF-8';
    $mail->Body     = "<p>You have recieved a new message from the enquiries form on your website.</p>
                        <p>
                            <strong>Name: </strong>{$name} 
                        </p>
                        <p>
                            <strong>Email Address: </strong>{$email} 
                        </p>
                        <p>
                            <strong>Message: </strong>{$message} // NOT WORKING HERE
                        </p>
                        <p>
                            This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}
                        </p>";

    if(!$mail->Send())
    {
       echo "There was an error... unable to send email <p>";
       echo "Mailer Error: " . $mail->ErrorInfo;
       exit;
    }

    echo "Thank you. Your email has been sent.";
?>

【问题讨论】:

  • 我已经在本地运行了该代码,它运行良好。您是否在表单上使用任何 javascript?在您的 php 脚本中使用 print_r($_POST) 检查消息字段是否正在发送到服务器。
  • 不,没有在表单上运行任何 Javascript。问题中发布的是我所拥有的。将很快尝试 print_r()...
  • 不,这是 print_r() 的输出 - 数组 ( [name] => sfdfg xdf sdf gsdfsg f [email] => fdsgsdff@dfkgjdf.com ) 谢谢。您的电子邮件已发送。
  • 嗯很奇怪。您确定页面上没有任何可能干扰的 javascript 吗?也许是引导程序或其他前端框架?只是出于好奇,当您将字段名称更改为消息以外的其他名称时会发生什么?这次出现在print_r中了吗?
  • 是的,页面上运行了 Javascript (Bootstrap),但不知道这会干扰我的消息字段吗?我还尝试将字段更改为“mymessage”,并将文本区域更改为“输入”,并将输入时的字段名称更改为“mymessage” - 但再次没有发送任何内容。我完全被难住了。不知道为什么只发送了 2 个字段而不是第 3 个。

标签: php post textarea phpmailer


【解决方案1】:

由于服务器未收到“消息”发布参数,因此前端正在清除。这可能是由表单的 javascript 验证或用于编辑字段的任何 WYSIWYG 引起的。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2010-12-13
    • 2014-11-27
    • 2011-12-19
    • 2012-02-18
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多