Добавить поле темы в форму электронной почты PHP

У меня есть форма электронной почты на PHP, и я хочу добавить тему в тело письма:

<?php
    if (isset($_POST["submit"])) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'Camino Contact Form'; 
        $to = '[email protected]'; 
        $subject = 'Message from Camino.bo ';
        $body ="From: $name\n E-Mail: $email\n Message:\n $message";


// If there are no errors, send the email
if (!$errName && !$errEmail && !$errMessage) {
    if (mail ($to, $subject, $body, $from)) {
        $result='<div class="success">Thank You! I will be in touch</div>';
    } else {
        $result='<div class="danger">Sorry there was an error sending your message. Please try again.</div>';
    }
}
    }
?>

Эта форма отправляет электронное письмо с темой «Сообщение от Camino.bo», это нормально, но я хочу отправить в теле письма значение, которое пользователь выбирает из раскрывающегося меню:

HTML:

<select name="subject" id="email_subject">
    <option value="default subject">Select a subject</option>
    <option>Product A</option>
    <option>Product B</option>
    <option>Product C</option>
</select>

Как я могу это сделать? PS: поле темы в моей форме является необязательным и не требует проверки.


person Andres    schedule 19.07.2015    source источник
comment
stackoverflow.com/a/6670067/2889187   -  person Sachin Kanungo    schedule 19.07.2015


Ответы (2)


Ваши переменные немного перепутаны. Четвертый параметр функции mail() — это не «От», а «Заголовки электронной почты», которые могут быть любым количеством значений заголовков в правильном формате, разделенных новой строкой. «От» будет просто одним из этих заголовков.

$to = '[email protected]';

$subject = 'My Email Subject';

$body = 'The body text of your email....';

$headers  = "MIME-Version: 1.0\r\n".
            "Content-type: text/html; charset=iso-8859-1\r\n".
            "From: YOU <[email protected]>\r\n";
            // and others as required

mail($to, $subject, $body, $headers);

Добавьте параметры POSTed в тег $body по мере необходимости.

person MaggsWeb    schedule 19.07.2015

Я не уверен, что я что-то упустил, но в вашем HTML вы хотите добавить значения к остальным параметрам:

<select name="subject" id="email_subject">
    <option value="default subject">Select a subject</option>
    <option value="Product A">Product A</option>
    <option value="Product B">Product B</option>
    <option value="Product C">Product C</option>
</select>

Тогда ваш php может быть следующим:

<?php
if (isset($_POST["submit"])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Camino Contact Form <[email protected]>'; 
    $to = '[email protected]'; 
    $subject = 'Message from Camino.bo ';
    $select_subject = $_POST['subject'];

    $body ="From: $name\n E-Mail: $email\n Message: $message\n Subject: $select_subject";

    $headers = "From: " . $from;


    // If there are no errors, send the email
    if (!$errName && !$errEmail && !$errMessage) {
        if (mail ($to, $subject, $body, $headers)) {
            $result='<div class="success">Thank You! I will be in touch</div>';
        } else {
            $result='<div class="danger">Sorry there was an error sending your message. Please try again.</div>';
        }
    }
}
?>

Обратите внимание, что я добавил $select_subject в переменную $body вашей электронной почты. Также замените '[email protected]' на адрес электронной почты ОТ, который вы хотите использовать. Может быть, вы можете уточнить свой вопрос подробнее, но я думаю, что это то, что вы хотите. Имейте в виду, что это не услуга по написанию кода, поэтому вы должны быть более конкретными в точных технических знаниях, которые вы хотите получить, чтобы вы могли делать это без руководства в будущем.

Кроме того, я не знаю, обрабатываете ли вы это где-то еще в своем коде, но я думаю, что вы должны отобразить сообщение на экране, если значение $errName, $errEmail или $errMessage равно true. Прямо сейчас, если хоть одно из этих утверждений верно (при условии, что код, который вы вставили сюда, завершен), ваш конечный пользователь ничего не отобразит на своем экране при отправке формы, и он может быть сбит с толку тем, что произошло, и попытается отправить его повторно.

person Steven Howell    schedule 19.07.2015