Проблемы с электронной почтой

У меня есть три формы электронной почты, которые позволяют пользователю отправлять сообщение одному из моих трех электронных писем без необходимости писать собственный адрес электронной почты. Формы работают и отправляют электронную почту, проблема в том, что информация, такая как отправитель электронной почты и сообщение для электронной почты, работает только в моей форме поддержки, но не для двух других форм ( "бизнес", "другой" ). Я не уверен, что именно не так.

Важно отметить, что есть три формы, как я это сделал, потому что я создал три кнопки под названием "бизнес" "поддержка" "другой", а затем, когда вы нажимаете одну из кнопок, появляется конкретная форма.

html script с формами внутри.

<!-- SUPPORT CONTACT FORM START-->
            <div class="contactSupportButton"><input type="image" src="supportContactButtonNew.png" id="contactSupportBut" alt="contact support button" style="height: 40px; width: 100px" onClick="showSupForm()"/>
                    <div id="contactSupportForm">

                        <form action="supFormSend.php" method="post" id="contactForms">

                        <div id="nameLabelForm">
                            <label for="name">Name:</label><br>
                            <input type="text" id="nameInput" name="nameInput"/>
                        </div>

                        <div id="emailLabelForm">
                            <label for="mail">E-mail:</label><br>
                            <input type="email" id="mailInput" name="mailInput"/>
                        </div>

                        <div id="messageLabelForm">
                            <label for="msg">Support Message:</label><br>
                            <textarea id="messageInput" name="messageInput"></textarea>
                        </div>

                        <div class="submitEmailButton">
                            <button type="submit" id="submitButton">Send message</button>
                        </div>

                        </form>

                    </div>
                </div>

            <!-- SUPPORT CONTACT FORM ENDING-->

            <!-- BUSINESS CONTACT FORM START-->
            <div class="contactBusinessButton"><input type="image" src="businessContactButtonNew.png" id="contactBusinessBut" alt="contact business button" style="height: 40px; width: 110px" onClick="showBusForm()"/>
                    <div id="contactBusinessForm"> 

                        <form action="busFormSend.php" method="post" id="contactForms">

                        <div id="nameLabelForm">
                            <label for="name">Name:</label><br>
                            <input type="text" id="nameInput"/>
                        </div>

                        <div id="emailLabelForm">
                            <label for="mail">E-mail:</label><br>
                            <input type="email" id="mailInput" />
                        </div>

                        <div id="messageLabelForm">
                            <label for="msg">Business Message:</label><br>
                            <textarea id="messageInput"></textarea>
                        </div>

                        <div class="submitEmailButton">
                            <button type="submit" id="submitButton">Send message</button>
                        </div>

                        </form>

                    </div>
                </div>
            <!-- BUSINESS CONTACT FORM ENDING-->

            <!-- OTHER CONTACT FORM START-->
            <div class="contactOtherButton"><input type="image" src="otherContactButtonNew.png" id="contactOtherBut" alt="contact other button" style="height: 40px; width: 110px" onClick="showOtherForm()"/>
                    <div id="contactOtherForm">

                        <form action="otherFormSend.php" method="post" id="contactForms">

                        <div id="nameLabelForm">
                            <label for="name">Name:</label><br>
                            <input type="text" id="nameInput"/>
                        </div>

                        <div id="emailLabelForm">
                            <label for="mail">E-mail:</label><br>
                            <input type="email" id="mailInput" />
                        </div>

                        <div id="messageLabelForm">
                            <label for="msg">Other Message:</label><br>
                            <textarea id="messageInput"></textarea>
                        </div>

                        <div class="submitEmailButton">
                            <button type="submit" id="submitButton">Send message</button>
                        </div>

                        </form>

                    </div>
                </div>
            <!-- OTHER CONTACT FORM ENDING-->

php script, который отправляет сообщение на мои письма.

Форма поддержки (supFormSend.php):

<?php
$field_name = $_POST['nameInput'];
$field_email = $_POST['mailInput'];
$field_message = $_POST['messageInput'];

$mail_to = '[email protected]';
$subject = 'Message regarding support from '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'contact.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to [email protected]');
        window.location = 'contact.html';
    </script>
<?php
}
header('Location: index.html');
exit;
?>

Бизнес-форма (busFormSend.php):

<?php
$field_name = $_POST['nameInput'];
$field_email = $_POST['mailInput'];
$field_message = $_POST['messageInput'];

$mail_to = '[email protected]';
$subject = 'Message regarding business from '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'contact.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to [email protected]');
        window.location = 'contact.html';
    </script>
<?php
}
header('Location: index.html');
exit;
?>

Другая форма (otherFormSend.php):

<?php
$field_name = $_POST['nameInput'];
$field_email = $_POST['mailInput'];
$field_message = $_POST['messageInput'];

$mail_to = '[email protected]';
$subject = 'Message regarding other from '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'contact.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to [email protected]');
        window.location = 'contact.html';
    </script>
<?php
}
header('Location: index.html');
exit;
?>

Ответ 1

HTML-формы полагаются на атрибут name для размещения данных на сервере (в данном случае PHP).

Когда вы ссылаетесь на переменную $_POST['nameInput'] в PHP, значение будет принимать значение поля в форме, где атрибут name является "nameInput". Например, <input type="text" id="nameInput" name="nameInput"/>.

Ваша форма #contactSupportForm работает, потому что атрибуты имени установлены для значений, которые вы указали в своем PHP.

Чтобы получить работу двух других форм, добавьте атрибут имени ко всем входам в HTML (и убедитесь, что значение атрибута name соответствует тому, что вы ссылаетесь на вашем PHP), как и в contactSupportForm.

Ответ 2

Джон Стирлинг ответил на вашу проблему. Кроме того, если формы находятся на одной странице, вы должны изменить значения id всех разных элементов html. Идентификатор должен быть уникальным на странице. Он не должен давать вам ошибку, но это неправильно, и если вы начнете использовать jquery/javascript, это может привести к проблемам в будущем.

Например, у вас есть три раза id = "nameInput"

Ответ 3

Поскольку вы установили From:, чтобы быть от вашего посетителя, ваш веб-сервер отправит электронное письмо с From: для любого адреса.

Это проблема, поскольку меры защиты от нежелательной почты предотвращают доставку сообщений, если ваш почтовый сервер или служба проверяет записи SPF.

Лучше отправить электронное письмо с [email protected] и иметь те, которые хотели бы реагировать, использовать заголовок reply-to... (не так сложно).

Основное различие: теперь это ваша учетная запись домена SPF имеет значение и, что более важно, исходный домен не начнет жаловаться на отказы, которые они получают за почту, из которой они не возникли.

Ответ 4

Используйте "имя" во всех ваших формах для идентификации полей ввода, то есть не "id"

правильный в первой форме:

<input type="text" id="nameInput" name="nameInput"/>

неверно в других формах:

<input type="email" id="mailInput" />