Как отправить форму HTML в электронном письме ... не только в MAILTO - PullRequest
34 голосов
/ 17 сентября 2011

У меня есть HTML-форма, которую люди могут заполнить, и я хочу, чтобы, когда они нажимают кнопку «Отправить», она просто отправляла электронную почту, а не поднимала их электронную почту и просила их отправить сообщение самостоятельно.

Когда я использую:

<form action="MAILTO:emailaddress@email.com"... >

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

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

Спасибо.

Ответы [ 5 ]

46 голосов
/ 17 октября 2015

> 2019 Ответ = Простой Способ с использованием Google Apps Script ( 5 минут )

У нас было подобное вызов, который нужно решить вчера, и мы решили его с помощью скрипта Google Apps!

Отправка электронной почты из HTML-формы Без Бэкэнда ( Сервер ) через Google!

Решение занимает 5 минут для реализации, и я задокументировал пошаговые инструкции : https://github.com/nelsonic/html-form-send-email-via-google-script-without-server

Краткий обзор

A.Используя образец сценария, разверните сценарий Google App

Разверните образец сценария в виде сценария APP Google Spreadsheet: google-script-just-email.js

3-script-editor-showing-script

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

B,Создайте форму HTML и установите action для URL-адреса приложения

Используя образец файла html: index.html создайте базовую форму.

7-html-form

не забудьте вставить URL-адрес приложения в форму action в форме HTML.

С.Протестируйте форму HTML в вашем браузере

Откройте форму HTML в своем браузере, введите некоторые данные и отправьте их!

html form

Отправьте форму.Вы должны увидеть подтверждение того, что оно было отправлено: form sent

Откройте почтовый ящик для установленного вами адреса электронной почты ( выше )

email received

Готово.

Все об этом настраивается , вы можете легко стиль / тема форма с вашим любимым CSS Библиотека и Сохранить отправленные данные в Google Spreadsheet для quick analysis.
полные инструкции доступны на GitHub :
https://github.com/nelsonic/html-form-send-email-via-google-script-without-server

23 голосов
/ 17 сентября 2011

Вы понимаете смысл, но, похоже, вы неправильно понимаете концепцию отправки электронной почты.

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

По сути, вместо MAILTO действие вашей формы должно указывать на этот сценарий PHP.В скрипте извлеките значения, переданные формой (в PHP они доступны через $_POST superglobal) и используйте функцию отправки электронной почты (mail()).

Конечно, это можно сделатьна других серверных языках.Я даю решение PHP, потому что PHP - это язык, с которым я работаю.

Простой пример кода:

form.html:

<form method="post" action="email.php">
    <input type="text" name="subject" /><br />
    <textarea name="message"></textarea>
</form>

email.php:

<?php
    mail('youremail@example.com', $_POST['subject'], $_POST['message']);
?>
<p>Your email has been sent.</p>

Конечно, сценарий должен содержать некоторые меры безопасности, такие как проверка того, доступны ли значения $ _POST вообще, а также дополнительные заголовки электронной почты (например, электронная почта отправителя), возможно, способиметь дело с кодировкой символов - но это слишком сложно для быстрого примера;).

4 голосов
/ 17 сентября 2011

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

Работаете ли вы на PHP или ASP.NET?

Пример ASP.NET

Пример PHP

2 голосов
/ 24 января 2014

Я на самом деле сейчас использую ASP C # для отправки своих электронных писем с чем-то вроде:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Form.Count > 0)
    {
        string formEmail = "";
        string fromEmail = "from@email.com";
        string defaultEmail = "default@email.com";

        string sendTo1 = "";

        int x = 0;

        for (int i = 0; i < Request.Form.Keys.Count; i++)
        {
            formEmail += "<strong>" + Request.Form.Keys[i] + "</strong>";
            formEmail += ": " + Request.Form[i] + "<br/>";
            if (Request.Form.Keys[i] == "Email")
            {
                if (Request.Form[i].ToString() != string.Empty)
                {
                    fromEmail = Request.Form[i].ToString();
                }
                formEmail += "<br/>";
            }

        }
        System.Net.Mail.MailMessage myMsg = new System.Net.Mail.MailMessage();
        SmtpClient smtpClient = new SmtpClient();

        try
        {
            myMsg.To.Add(new System.Net.Mail.MailAddress(defaultEmail));
            myMsg.IsBodyHtml = true;
            myMsg.Body = formEmail;
            myMsg.From = new System.Net.Mail.MailAddress(fromEmail);
            myMsg.Subject = "Sent using Gmail Smtp";
            smtpClient.Host = "smtp.gmail.com";
            smtpClient.Port = 587;
            smtpClient.EnableSsl = true;
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials = new System.Net.NetworkCredential("testing@gmail.com", "pward");

            smtpClient.Send(defaultEmail, sendTo1, "Sent using gmail smpt", formEmail);

        }
        catch (Exception ee)
        {
            debug.Text += ee.Message;
        }
    }
}

Это пример использования gmail в качестве отправителя почты smtp.Некоторое из того, что здесь есть, не нужно, но это то, как я его использую, так как я уверен, что есть более эффективные способы таким же образом.

0 голосов
/ 10 июля 2014
<FORM Action="mailto:xyz?Subject=Test_Post" METHOD="POST">
    mailto: protocol test:
    <Br>Subject: 
    <INPUT name="Subject" value="Test Subject">
    <Br>Body:&#xa0;
    <TEXTAREA name="Body">
    kfdskfdksfkds
    </TEXTAREA>
    <BR>
    <INPUT type="submit" value="Submit"> 
</FORM>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...