PHP联系人表单-基于选定表单值的动态电子邮件列表

时间:2018-09-23 09:34:09

标签: php phpmailer contact-form

我需要将多个电子邮件地址动态添加到联系表单发送的电子邮件的“抄送:”字段中。抄送:中的电子邮件应基于选定的表单下拉值添加。表单中有多个下拉菜单,每个值都分配了许多电子邮件。

电子邮件的收件人是一个将自动打开故障单的系统,因此“收件人:”字段将只有1个硬编码的电子邮件地址。但是基于其他值(格式和优先级),需要告知不同的利益相关者该电子邮件已发送到系统。例如:

<tr>
 <td valign="top">
  <label for="priority"> Priority:</label>
</td>
 <td valign="top">
 <select name="priority">
  <option value="3">Normal</option>
  <option value="2">High</option>
  <option value="1">Critical</option>
 </td>
 </select>
 </tr>

 <tr>
 <td valign="top">
  <label for="platform">Platform:</label>
</td>
 <td valign="top">
 <select name="platform">
  <option value="windows">Windows</option>
  <option value="mac">MAC</option>
  <option value="ios">iOS</option>
  <option value="android">Android</option>
 </td>
 </select>
</tr>

如果priority = 1(电子邮件1,email2,email3)和平台= windows(电子邮件4,email5),则抄送:字段应具有:电子邮件1,电子邮件2,电子邮件3,电子邮件4,电子邮件5。总共有5个下拉菜单,每个下拉菜单都有3到7个值,因此对所有组合进行硬编码是不合理的。

最好的方法是什么?最好将一个变量分配给Cc:标头,然后使其从预定义列表中提取电子邮件并将其组合为字符串?

$to = 'email_address@mail.com' ;     
$subject = strip_tags($_POST['subject']);
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: ".$_POST['email']." \r\n"; 
$headers .= "Cc: ".$_POST['need to compose this part']." \r\n";

此外,最好将Cc:电子邮件的列表保存在脚本之外,以便可以在不更改代码的情况下对其进行更改吗?

对此我将不胜感激。

1 个答案:

答案 0 :(得分:1)

将电子邮件存储在两个数组中: -优先级的第一个数组 -平台的第二个数组

$arrPriority = array("email1 email2 email3", "email1 email2 email4", "email1 email3 email4");
$arrPlatform = array("windows" => "email5 email6", "mac" => "email5 email7", "ios" => "email6 email7", "android" => "email5 eamil6");
...
$headers .= "Cc: ".$arrPriority[$_POST['priority']]." ".$arrPlatform[$_POST['platform']]." \r\n";

发布优先级和平台将选择电子邮件抄送的必要组合: