【问题标题】:How do I send a multiple field form to email with multiple variables?如何将多字段表单发送到包含多个变量的电子邮件?
【发布时间】:2013-09-19 01:17:43
【问题描述】:

我今天和昨天的大部分时间都在试图让一个简单的、基本的发送到电子邮件的 PHP 代码工作。这是我根据我在本网站和其他网站上阅读的许多其他主题进行广泛研究、检查和编辑后自己尝试整理的代码。

   <?php 

$to='dustedpages@gmail.com';
$subject='Commission Inquiry';
$email = $_REQUEST['Email'] ; 
$headers = "From: $email";
$sent = mail($to, $subject, $message, $headers) ; 
$message="Name:  ".$name. "\r\n" . "Email:  " .$email . "\r\n" . "Username:  " .$user . "\r\n" . "Type:  ".$position. "\r\n" . "Add-Ons:  ".$addons. "\r\n" . "Price:  ".$price. "\r\n" . "Brief Description:  ".$briefdesc;


$name=$_POST['FirstName'],['LastName'];
$email=$_POST['Email'];
$user=$_POST['User'];

$position=$_POST['position'];
$addons=$_POST['cat'],['dog'];
$price=$_POST['price'];
$desc=$_POST['briefdesc'];



if($sent) 
{print "Your mail was sent successfully. Please be patient and the artist will contact you soon. Thanks!"; }
else 
{print "We encountered an error sending your mail"; }


?> 

实际上除了基本信息之外还有很多表单数据,但我什至无法显示基本信息。对于它从中提取的 html 代码部分,这里是它的一些样子。

<!--NAME-->
        </li>       <li id="li_2" >
        <label class="description" for="element_2">Name </label>
        <span>
        <input onkeypress="return handleEnter(this, event)" id="element_2_1" name="FirstName" class="element text" maxlength="255" size="14" value=""/>
        <label>First</label>
        </span>

        <span>
        <input onkeypress="return handleEnter(this, event)" id="element_2_2" name="LastName" class="element text" maxlength="255" size="18" value=""/>
        <label>Last</label>
        </span>
        <p class="guidelines" id="guide_2"><small>Please fill this in as the name I will see on Paypal.</small></p> 

<!--EMAIL-->

        </li>       <li id="li_1" >
        <label class="description" for="element_1">Email </label>
        <div>
        <input onkeypress="return handleEnter(this, event)" id="element_1" name="Email" class="element text medium" type="text" maxlength="255" value=""/>  
        </div>
        <p class="guidelines" id="guide_1"><small>Your Paypal email</small></p> 



<!--USERNAME-->

        </li>       <li id="li_3" >
        <label class="description" for="element_3">DA/Tumblr Username </label>
        <div>
        <input onkeypress="return handleEnter(this, event)" id="element_3" name="User" class="element text medium" type="text" maxlength="255" value=""/> 
        </div>
        <p class="guidelines" id="guide_3"><small>If you have an account on either Deviantart or Tumblr and wish to be credited in the commission description, please note it here.</small></p> 
        </li>
        <p> 

<!--POSITION TYPE-->

    </li>       <li id="li_26" >
    <label class="description" for="element_26">Comm. Type </label>

    <div>

    <select class="element select medium" id="element_26" name="position"> 

    <option value="" selected="selected"></option>
    <option value="1" >Bust</option>
    <option value="2" >Waist</option>
    <option value="3" >Full-Body</option>

    </select>
    </div>

    <p class="guidelines" id="guide_26">
    <small>Please choose what position you wish for your character(s) to be viewed from. Price will change depending on what type you choose.</small></p> 


<!--ADD ONS-->

    </li>       <li id="li_27" >
    <label class="description" for="element_27" name="addons">Add-Ons </label>

    <span>

    <input name="cat" type="checkbox" onClick="return KeepCount()">
    +1 Character<br>


    <input name="dog" type="checkbox" onClick="return KeepCount()">
    +2 Characters

我有多个字段(例如名字和姓氏),我需要成为电子邮件代码中的一个变量,并且我需要能够在电子邮件中显示所有填写的表单字段。在这一点上,我什至无法显示一个以上的变量。

表单本身还包括选择、复选框、文本区域和图像上传。我什至还没有达到这一点——我只是想立即显示一些基本信息。我对 HTML 和 Javascript 非常熟悉,只是对 PHP 不太熟悉,尽管我以前使用过它。一些表单数据也用于与 HTML 相同的页面上的 Javascript 代码中。实际的 PHP 数据位于我的表单从中提取的单独文件中。

【问题讨论】:

  • 所以您遇到的问题是电子邮件无法发送?如果是这样,您确定您使用的服务器是为电子邮件设置的吗?
  • 它显示了一些解析错误,所以我从 $name=$_POST['FirstName'],['LastName']; 中删除了第二个变量然后 $addons=$_POST['cat'],['dog'];但随后它只会发送一条标题为“佣金查询”的空消息。
  • 在定义$message后尝试定义$sent
  • 这次真的出现了一些东西!如果不给我一个错误,我仍然无法让两个表单字段“FirstName”和“LastName”显示为一个值。如果我只使用一个变量,它会显示一个变量。此外,我的选择输入(“位置”)只是显示为一个数字,即使它们具有唯一的名称。 'briefdesc' textarea 输入根本不会显示,我的'addon' 复选框只显示为“on”一词。有什么建议吗?
  • 对于名称,您需要连接“名字”变量和“姓氏”变量。对于您的选择输入,您将获得一个数字,因为这是您的价值属性中的内容。您的代码中没有 textarea,所以这就是为什么它不会显示。我不确定为什么复选框不会显示,但很可能是因为您没有正确关闭 html 标签

标签: forms email variables


【解决方案1】:

我认为正在发生的事情是您试图在变量具有您想要的值之前使用它们。试试下面的方法,让我知道结果如何。

<?php

$to = 'dustedpages@gmail.com';
$subject = 'Commission Inquiry';
$headers = "From: $email";

$fname = $_POST['FirstName'];
$lname = $_POST['LastName'];
$email = $_POST['Email'];
$user = $_POST['User'];
$position = "CHANGE-ME";
$addons = "CHANGE-ME";
$price = "CHANGE-ME";
$briefdesc = "CHANGE-ME";

$message = "Name: ".$fname.", ".$lname."\r\n";
$message .= "Email: $email \r\n";
$message .= "Username: $user \r\n";
$message .= "Type: $position \r\n";
$message .= "Add-Ons: $addons \r\n";
$message .= "Price: $price \r\n";
$message .= "Brief Description: $briefdesc \r\n";

$sent = mail($to, $subject, $message, $headers);

if($sent) {
    echo "Success";
}
else {
    echo "Failure";
}
?>

【讨论】:

  • 效果很好,谢谢!现在,如果我想从我的表单中添加更多变量(我必须这样做),我是否只需使用 '$message .= "variables go here";在最后一个 $message 行之后? (我也不知道你可以使用多个 $message 行我很傻)我注意到第一个 $message 字符串之后的行在等号之前有一个点。我只需要分配单独的值并将它们串在一起,但您的建议非常有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多