如何在电子邮件中发送HTML表单。而不仅仅是MAILTO

我有一个供人填写的HTML表单,当我点击提交button时,它会发送电子邮件,而不是提出电子邮件,并要求他们自己发送邮件。

当我使用:

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

所有这些都是打开一个新的窗口,并填充电子邮件的正文,但我希望它只是发送一封电子邮件。

有没有一种方法来格式化电子邮件的样子的输出? 而不仅仅是字段名称和input值的列表。

谢谢。

> 2017答案 =使用Google Apps脚本的简单方法( 5分钟

我们昨天也遇到类似的挑战,我们使用Google Apps脚本解决了这个问题!

没有后端( 服务器 )的HTML表单发送电子邮件通过Google!

该解决scheme需要5分钟实施,我已经logging了分步说明 : https : //github.com/nelsonic/ html-form-send-email-via-google-script-without-server

简要概述

A.使用示例脚本部署Google App脚本

将示例脚本部署为Google Spreadsheet APP脚本: google-script-just-email.js

3脚本编辑器,显示脚本

请记住将脚本中的TO_ADDRESS设置为您希望发送电子邮件的位置。
并复制APP URL,以便在发布脚本时在下一步中使用它。

B.创build您的HTML表单并将操作设置为应用程序URL

使用示例html文件: index.html创build一个基本的表单。

7-HTML的形式

记住要将您的APP URL粘贴到HTML表单的表单action中。

C.在浏览器中testingHTML表单

在浏览器中打开HTML表单,input一些数据并提交!

html表单

提交表单。 您应该看到确认信息已发送: 表格发送

打开您设置的电子邮件地址的收件箱( 上图

收到邮件

完成。

这一切都是定制的 ,您可以使用自己喜欢的CSS轻松地 devise风格/主题 表单 ,并将提交的数据存储Google Spreadsheet中以便快速分析。
完整的说明GitHub可用
https://github.com/nelsonic/ html-form-send-email-via-google-script-without-server

你是有道理的,但你似乎误解了发送电子邮件的概念。

HTML在客户端parsing,而电子邮件需要从服务器发送。 你不能用纯HTML做。 我会build议编写一个PHP脚本来处理发送给你的电子邮件。

基本上,而不是MAILTO,您的表单的行动将需要指向该PHP脚本。 在脚本中,检索通过表单传递的值(在PHP中,它们通过$_POST superglobal可用)并使用电子邮件发送函数( mail() )。

当然,这也可以在其他服务器端语言中完成。 我正在给PHP解决scheme,因为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 valies是否可用,以及额外的电子邮件标题(例如发件人的电子邮件),也许是一种处理字符编码的方法 – 但这也是复杂的一个快速的例子;)。

我不知道你想做什么是可能的。 根据我的理解,从Web表单发送电子邮件需要使用服务器端语言与邮件服务器进行通信并发送消息。

你正在运行PHP或ASP.NET?

ASP.NET示例

PHP示例

我实际上使用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邮件发件人的例子。 这里的一些东西是不需要的,但是这是我使用它的方式,因为我确信有相同的方式有更有效的方法。

 <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>