Как отправить HTML-форму в электронную почту.. не только MAILTO
У меня есть HTML-форма для заполнения людьми, и я хочу, чтобы это было, когда они нажимают кнопку отправки, она просто отправит электронное письмо, а не откроет электронную почту и попросит отправить сообщение сами.
Когда я использую:
<form action="MAILTO:[email protected]"... >
Все, что делает, открывает новое окно и заполняет тело письма, но я хочу, чтобы он просто отправил электронное письмо.
И есть ли способ отформатировать вывод того, как будет выглядеть электронное письмо? Вместо простого списка имен полей и введенного значения.
Спасибо.
Ответы
Ответ 1
Я фактически использую ASP С# для отправки своих писем сейчас, с чем-то вроде:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Form.Count > 0)
{
string formEmail = "";
string fromEmail = "[email protected]";
string defaultEmail = "[email protected]";
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("[email protected]", "pward");
smtpClient.Send(defaultEmail, sendTo1, "Sent using gmail smpt", formEmail);
}
catch (Exception ee)
{
debug.Text += ee.Message;
}
}
}
Это пример использования gmail в качестве отправителя почты smtp. Некоторые из того, что здесь, не нужны, но я использую его, так как я уверен, что есть более эффективные способы таким же образом.
Ответ 2
> 2017 Ответ = простой способ с помощью Google Apps Script (5 мин.)
У нас была аналогичная задача решить вчера, и мы решили ее с помощью Google Apps Script!
Отправка электронной почты из формы HTML без бэкэнда (сервера) через Google!
Решение реализовано 5 минут, и я документировал с помощью пошаговых инструкций: https://github.com/nelsonic/ HTML-форм-отправить-почту-через-google- script -Без-сервер
Краткий обзор
A. Используя образец script, разверните приложение Google Script
Разверните образец Script как приложение Google Spreadsheet APP Script:
google- script -just-email.js
![3-script-editor-showing-script]()
помните, чтобы установить TO_ADDRESS
в Script туда, где вы хотите отправить электронные письма.
и скопируйте URL-адрес APP, чтобы вы могли использовать его на следующем шаге, когда вы опубликуете Script.
В. Создайте свою HTML-форму и установите action
в URL-адрес приложения
Используя образец html
:
index.html
создайте базовую форму.
![7-html-form]()
помните, чтобы вставить URL-адрес APP в форму action
в форме HTML.
С. Проверьте форму HTML в браузере
Откройте HTML-форму в своем браузере, введите некоторые данные и отправьте их!
![html form]()
Отправить форму. Вы должны увидеть подтверждение, что оно было отправлено:
![form sent]()
Откройте папку "Входящие" для указанного вами адреса электронной почты (вверху)
![email received]()
Готово.
Все об этом настраивается, вы можете легко стиль/тема форма с вашей любимой библиотекой CSS. и Сохранить предоставленные данные в Таблице Googleдля быстрого анализа.
полные инструкции доступны в GitHub:
https://github.com/nelsonic/ html-form-send-email-via-google- script -without-server
Ответ 3
У вас есть смысл, но вы, похоже, неправильно понимаете концепцию отправки электронных писем.
HTML анализируется на стороне клиента, в то время как электронное письмо должно быть отправлено с сервера. Вы не можете сделать это в чистом HTML. Я бы предложил написать PHP script, который будет касаться отправки электронной почты для вас.
В принципе, вместо MAILTO, ваше действие формы должно указывать на PHP script. В script извлеките значения, переданные формой (в PHP они доступны через супергалогл $_POST
) и используют функцию отправки электронной почты (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('[email protected]', $_POST['subject'], $_POST['message']);
?>
<p>Your email has been sent.</p>
Конечно, script должен содержать некоторые меры безопасности, такие как проверка того, доступны ли домены $_POST, а также дополнительные заголовки электронной почты (например, электронная почта отправителя), возможно, способ справиться с символом кодирование - но это слишком сложно для быстрого примера;).
Ответ 4
Я не знаю, что то, что вы хотите сделать, возможно. По моему мнению, отправка электронной почты из веб-формы требует, чтобы язык на стороне сервера связывался с почтовым сервером и отправлял сообщения.
Вы используете PHP или ASP.NET?
Пример ASP.NET
Пример PHP
Ответ 5
<FORM Action="mailto:xyz?Subject=Test_Post" METHOD="POST">
mailto: protocol test:
<Br>Subject:
<INPUT name="Subject" value="Test Subject">
<Br>Body: 
<TEXTAREA name="Body">
kfdskfdksfkds
</TEXTAREA>
<BR>
<INPUT type="submit" value="Submit">
</FORM>