从html文件中的Option标签生成的PHP主题行不会显示在电子邮件中

问题描述 投票:0回答:3

我正在创建一个应用程序表单,其中包含某些字段,例如人员的名字,姓氏,电子邮件,部门等,并将该信息提交到电子邮件表单中。一切都很完美,但我想要用户选择在电子邮件主题行中显示的部门。我将该部分变成了一个选项,而不是让用户输入它并在我的PHP电子邮件文件中使用$ _POST。我确定它很小但我不确定应该怎么做。有什么建议吗?提前致谢

----------------------------这是HTML代码----------------- --------

    <body style="padding:3px; margin:0px;" bgcolor="#FFFFFF"> 
    <center>
    <table cellpadding="0" cellspacing="0" border="0" width="440"> 

        <tr><td style="height:10px"></td></tr> 
        <tr> 
          <td colspan="2" style="text-align:justify; line-height:15px;" class="body"> 

          <form name="frm" method="POST" action="php file" enctype="multipart/form-data"> 
          <center>
          <table cellpadding="0" cellspacing="0" border="0" width="100%"> 
              .........
              .........
              .........
            <tr><td style="height:3px"></td></tr>
            <tr>
            <td width = "23%" class="body">Departments</td>
            <td width = "3%" class ="body">:</td>
            <td width="74%">
                <select>

     <option value="departments" name = "departments">Engineering</option>
     <option value="departments" name = "departments">Marketing</option>
     <option value="departments" name = "departments">PR/Social</option>
     <option value="departments" name = "departments">Media</option>
                </select>
            </td>
            </tr>

------------------- PHP --------------------------

       <?php

if(!empty($_FILES['resume_name']['name'])){

    $file_name=$_FILES['resume_name']['name'];
    $temp_name=$_FILES['resume_name']['tmp_name'];
    $file_type=$_FILES['resume_name']['type'];
    $file_size=$_FILES['resume_name']['size'];

    $base=basename($file_name);
    $extension= pathinfo($base, PATHINFO_EXTENSION);

    $allowed_ext=array("doc","docx","pdf","zip","jpeg","jpg","txt");

    if (in_array($extension,$allowed_ext)){
    $from=$_POST['email'];
    $fname=$_POST['first_name'];


    $lname=$_POST['last_name'];
        $to="[email protected]";
        $subject= $departments;
        $credentials=$_POST['qualifications'];

        $message= 

        '           The person that contacted you is: '.$fname.' '.$lname.'
                E-mail: '.$from.' 
                Subject: '$subject'
                Qualifications: '.$credentials.'

        |---------END MESSAGE----------|';


        $file=$temp_name;
        $content = chunk_split(base64_encode(file_get_contents($file)));
        //$content = chunk_split(base64_encode(file_get_contents($content)));
        $uid=md5(uniqid(time()));


        $header =  "From:   ". $from. "\r\n";
        $header .= "Reply-To:   ". $replyto. "\r\n";
        $header .= "MIME-Version: 1.0\r\n";

        $header .="Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";


        $header .= "--".$uid."\r\n";
        $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
        $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
        $header .= $message."\r\n\r\n";
        $header .= "--".$uid."\r\n";

        $header .= "--".$uid."\r\n";
        $header .= "Content-type:   ".$file_type."; name=\"".$file_name."\"\r\n";
        $header .= "Content-Transfer-Encoding: base64\r\n";
        $header .= "Content-Disposition: resume_name; file_name=\"".$file_name."\"";
        $header .= $content."\r\n\r\n";

        if(@mail($to, $subject, $message, $header)){
                echo "Success";
                }
                exit();
    ?>
php html show subject
3个回答
1
投票

您应该为您的选项设置值,如下所示:

<option value="Engineering" name = "departments">Engineering</option>
<option value="Marketing" name = "departments">Marketing</option>
...

比你的PHP把这个:

$subject = $_POST['departments'];

这不是最好的解决方案,但它会起作用。

更好的是在PHP文件(config)数组中用可用的部门$departments = array(1 => 'department1', 2 => 'department2')定义某个地方,在html模板中使foreach循环上面的数组部门设置值到数组中的键和在电子邮件脚本中使用$deparments[intval($_POST['departments'])]


0
投票

我意识到这是我编写头语句的方式。相反,我改为:

    $header =  "From:   ". $from. "\r\n";
$header .= "Reply-To:   ". $replyto. "\r\n";
$subject .= "Applicant for the $subject1 Dept\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .="Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";

我还添加了你建议的POST语句,这样它就可以从html文件中获取输入并在php文件中使用它。它现在就像一个魅力。谢谢!!


0
投票

使用<select>下拉列表名称应该在select标签中,而不是选项,然后$ _POST ['departments']将是所选选项的'value'

<select name = "departments">

 <option value="engineering" >Engineering</option>
 <option value="marketing" >Marketing</option>
 <option value="social" >PR/Social</option>
 <option value="media" >Media</option>

我很惊讶这对你来说是正常的,我认为它总是回到最后的选项(在这种情况下是媒体),虽然我没有测试过这个假设....

点击此处查看选择标签https://www.w3schools.com/tags/tag_select.asp的“允许”属性

© www.soinside.com 2019 - 2024. All rights reserved.