Строка темы PHP, созданная из тега Option в файле html, не будет отображаться в электронной почте

Я создаю форму заявки, которая получает определенные поля, такие как имя, фамилия, адрес электронной почты, отдел и т. д., и отправляет эту информацию в форму электронной почты. И все работает отлично, но я хочу, чтобы отдел, который выбирает пользователь, отображался в строке темы письма. Я сделал эту часть опцией, вместо того, чтобы пользователь вводил ее и использовал $_POST в моем файле электронной почты PHP. Я уверен, что это незначительно, но я не уверен, как это должно быть сделано. Есть предложения? заранее спасибо

----------------------------Вот код 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();
    ?>

person user3116769    schedule 22.12.2013    source источник
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?.   -  person rene    schedule 22.12.2013


Ответы (3)


Вы должны установить значение для своих опций, например:

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

Чем в вашем PHP поместите это:

$subject = $_POST['departments'];

Это не лучшее решение, но оно будет работать.

Лучше было бы определить где-нибудь в массиве PHP-файла (конфигурации) доступные отделы $departments = array(1 => 'department1', 2 => 'department2'), в шаблоне html сделать цикл foreach над массивом отделов, установить значение для ключа в массиве, а в сценарии электронной почты использовать $deparments[intval($_POST['departments'])]

person Tomas Zaruba    schedule 22.12.2013

Я понял, что именно так я писал заявление заголовка. Вместо этого я изменил его на:

    $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-файле. Теперь это работает как шарм. Спасибо!!

person user3116769    schedule 28.12.2013

с раскрывающимся списком <select> имя должно идти в теге выбора, а не в опциях, тогда $_POST['departments'] будет «значением» выбранной опции

<select name = "departments">

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

I'm surprised this is working correctly for you, I'd have thought it always reverted to the final option (Media in this case) though I haven't tested that assumption....

проверьте здесь «разрешенные» атрибуты для выбранных тегов https://www.w3schools.com/tags/tag_select.asp

person imposterSyndrome    schedule 01.03.2019