我正在创建一个应用程序表单,其中包含某些字段,例如人员的名字,姓氏,电子邮件,部门等,并将该信息提交到电子邮件表单中。一切都很完美,但我想要用户选择在电子邮件主题行中显示的部门。我将该部分变成了一个选项,而不是让用户输入它并在我的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();
?>
您应该为您的选项设置值,如下所示:
<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'])]
我意识到这是我编写头语句的方式。相反,我改为:
$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文件中使用它。它现在就像一个魅力。谢谢!!
使用<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的“允许”属性