Подтвердить что ты не робот

Кнопка html для отправки электронной почты

Как отправить сообщение с указанными начальными значениями для заголовков subject и message с помощью кнопки в html, например

<form method="post" action="mailto:email.com?subject=subject&message=message">

где subject и message - значения, полученные из form?

4b9b3361

Ответ 1

Вы можете использовать mailto, вот код HTML:

<a href="mailto:EMAILADDRESS">

Замените EMAILADDRESS своей электронной почтой.

Ответ 2

Этот метод, похоже, не работает в моем браузере, и оглядываясь, указывает, что весь предмет указания заголовков на ссылку/действие mailto ограниченно поддерживается, но, возможно, это может помочь...

HTML:

<form id="fr1">
    <input type="text" id="tb1" />
    <input type="text" id="tb2" />
    <input type="button" id="bt1" value="click" />
</form>

JavaScript (с jQuery):

$(document).ready(function() {
    $('#bt1').click(function() {
        $('#fr1').attr('action',
                       'mailto:[email protected]?subject=' +
                       $('#tb1').val() + '&body=' + $('#tb2').val());
        $('#fr1').submit();
    });
});

Обратите внимание, что я здесь делаю. Сама форма не имеет никаких действий. И кнопка отправки на самом деле не является типом submit, это просто тип button. Используя JavaScript, я привязываюсь к этому событию нажатия кнопки, устанавливая атрибут действия формы, а затем отправляю форму.

Он работает так, как передает форму в действие mailto (моя почтовая программа по умолчанию всплывает и открывает новое сообщение на указанный адрес), но для меня (Safari, Mail.app) это не на самом деле указывая Субъект или Тело в полученном сообщении.

HTML не очень хороший инструмент для этого, так как я уверен, что другие указывают, когда я печатаю это. Возможно, это может работать в некоторых браузерах и/или некоторых почтовых клиентах. Тем не менее, это действительно даже не безопасное предположение, что пользователи будут иметь толстый почтовый клиент в эти дни. Я не могу вспомнить, когда я в последний раз открывал свою. HTML mailto - это немного устаревшая функциональность, и в наши дни это действительно так же, как если бы вы выполняли действие почты на серверной стороне, если это возможно.

Ответ 3

Как отмечает David , его предложение фактически не выполняет запрос OP, который был электронным письмом с темой и сообщением. Это не работает, потому что большинство, возможно, все, комбинации браузеров и почтовых клиентов не принимают атрибуты subject и body URI mailto: при поставке как <form> action.

Но вот рабочий пример:

HTML (с Bootstrap):

<p><input id="subject" type="text" placeholder="type your subject here" 
    class="form-control"></p>
<p><input id="message" type="text" placeholder="type your message here" 
    class="form-control"></p>
<p><a id="mail-link" class="btn btn-primary">Create email</a></p>

JavaScript (с jQuery):

<script type="text/javascript">
    function loadEvents() {
        var mailString;
        function updateMailString() {
            mailString = '?subject=' + encodeURIComponent($('#subject').val())
                + '&body=' + encodeURIComponent($('#message').val());
            $('#mail-link').attr('href',  'mailto:[email protected]' + mailString);
        }
        $( "#subject" ).focusout(function() { updateMailString(); });
        $( "#message" ).focusout(function() { updateMailString(); });
        updateMailString();
    }
</script>

Примечания:

  • Элемент <form> со связанным атрибутом action не используется.
  • Элемент <input> типа button также не используется.
    • <a>, созданный в виде кнопки (при использовании Bootstrap), заменяет <input type="button">
    • focusout() с updateMailString() необходимо, потому что атрибут <a> tag href не обновляется автоматически при изменении значений полей ввода.
    • updateMailString() также вызывается, когда документ загружается, если поля ввода предварительно заполнены.
  • Также encodeURIComponent() используется для получения символов, таких как кавычка ("), в Outlook.

В этом подходе mailto: URI предоставляется (с атрибутами subject и body) в теге a href. Это работает во всех сочетаниях браузеров и почтовых клиентов, которые я тестировал, которые являются последними (2015) версиями:

  • Браузеры: Firefox/Win & OSX, Chrome/Win & OSX, IE/Win, Safari/OSX и iOS, Opera/OSX
  • Клиенты электронной почты: Outlook/Win, Mail.app/OSX&iOS, Sparrow/OSX

Бонусный совет: в моих вариантах использования я добавляю контекстный текст к электронной почте body. Чаще всего я хочу, чтобы этот текст содержал разрывы строк. %0D%0A (возврат каретки и перевод строки) работает в моих тестах.

Ответ 4

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

HTML не может отправлять почту, вам нужно использовать язык на стороне сервера, например php, что является другой темой. Есть достаточно хорошие ресурсы о том, как это сделать здесь, на SO или в другом месте в Интернете.

Если вы используете php, я вижу SwiftMailer, предложенный совсем немного.

Ответ 5

Вы не можете напрямую отправить электронное письмо с помощью HTML-формы. Однако вы можете отправить форму на свой веб-сервер и затем сгенерировать электронное письмо с помощью серверной программы, написанной, например, PHP.

Другое решение - создать ссылку так же, как и с mailto:. Это откроет локальную программу электронной почты от пользователя. Затем он может отправить предварительно заполненную электронную почту.

Когда вы решили, как вы хотели это сделать, вы можете задать другой (более конкретный) вопрос на этом сайте. (Или вы можете найти решение где-то в Интернете.)

Ответ 6

Я не мог найти ответа, который действительно удовлетворял исходный вопрос, поэтому я собрал простой бесплатный сервис (PostMail) что позволяет вам сделать стандартный HTTP-запрос POST для отправки электронной почты. Когда вы регистрируетесь, он предоставляет вам код, который вы можете скопировать и вставить на свой сайт. В этом случае вы можете просто использовать сообщение формы:

HTML:

<form action="https://postmail.invotes.com/send"
    method="post" id="email_form">

    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message"></textarea>
    <!-- replace value with your access token -->
    <input type="hidden" name="access_token" value="{your access token}" />

    <input type="hidden" name="success_url"
      value=".?message=Email+Successfully+Sent%21&isError=0" />
    <input type="hidden" name="error_url"
      value=".?message=Email+could+not+be+sent.&isError=1" />

    <input id="submit_form" type="submit" value="Send" />
</form>

Опять же, при полном раскрытии, я создал эту услугу, потому что не нашел подходящего ответа.

Ответ 7

 <form action="mailto:[email protected]" method="post"               enctype="text/plain">
 Name:<br>
<input type="text" name="name"><br>
 E-mail:<br>
<input type="text" name="mail"><br>
Comment:<br>
<input type="text" name="comment" size="50"><br><br>
<input type="submit" value="Send">
<input type="reset" value="Reset">

Ответ 8

@user544079

Несмотря на то, что сейчас он очень старый и неактуальный, я отвечаю, чтобы помочь людям, таким как я! это должно быть так:

<form method="post" action="mailto:$emailID?subject=$MySubject &message= $MyMessageText">

Здесь $ EMAILID, $ MySubject, $ MyMessageText - это переменные, которые вы назначаете из FORM или таблицы DATABASE, или просто можете назначать значения в самом коде. В качестве альтернативы вы можете поместить такой код (обычно он не используется):

<form method="post" action="mailto:[email protected]?subject=New Registration Alert &message= New Registration requires your approval">