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

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

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

здесь subject и message значения, извлеченные из form?

8 ответов


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

<a href="mailto:EMAILADDRESS">

заменить EMAILADDRESS С вашей электронной почтой.


этот метод, похоже, не работает в моем браузере, и оглядываясь вокруг, указывает, что вся тема указания заголовков на 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:test@test.com?subject=' +
                       $('#tb1').val() + '&body=' + $('#tb2').val());
        $('#fr1').submit();
    });
});

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

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

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


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

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

HTML-код (с загрузки стили):

<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:person@email.com' + mailString);
        }
        $( "#subject" ).focusout(function() { updateMailString(); });
        $( "#message" ).focusout(function() { updateMailString(); });
        updateMailString();
    }
</script>

Примечания:

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

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

  • - браузеры: в Firefox/победа&OSX и хром/выигрыш и в OSX, т. е./Победы, сафари на OSX и iOS, Опера/OSX с
  • клиенты электронной почты: Outlook / Win, Почта.app / OSX & iOS, Воробей / OSX

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


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

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

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


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

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


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

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

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


 <form action="mailto:someone@example.com" 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">


@user544079

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

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

здесь $emailID, $MySubject, $MyMessageText-это переменные, которые вы назначаете из формы или таблицы базы данных или просто можете назначить значения в самом коде. В качестве альтернативы вы можете поместить код следующим образом (обычно он не используется):

<form method="post" action="mailto:admin@website.com?subject=New Registration Alert &message= New Registration requires your approval">