我有一个HTML表单供人们填写,我想要它,所以当他们点击提交按钮时,它只会发送电子邮件,而不是提起他们的电子邮件并要求他们自己发送邮件。
当我使用时:
<form action="MAILTO:emailaddress@email.com"... >
所有这一切都是打开一个新窗口并填充电子邮件的正文,但我希望它只是发送一封电子邮件。
有没有办法格式化电子邮件的输出?而不仅仅是字段名称和输入值的列表。
感谢。
答案 0 :(得分:46)
我们昨天有一个类似的挑战要解决,我们使用Google Apps脚本解决了它!
该解决方案需要 5分钟 来实施,并且我已经记录了 分步说明 :https://github.com/nelsonic/html-form-send-email-via-google-script-without-server
将示例脚本部署为Google电子表格APP脚本: google-script-just-email.js
记住 ,将脚本中的
TO_ADDRESS
设置为您希望发送电子邮件的位置。
并复制 APP网址,以便在 发布脚本 时在下一步中使用它。
action
设置为App URL 使用示例html
文件:
index.html
创建一个基本形式。
请记住将 APP网址粘贴到HTML表单中的
action
表单中。
在浏览器中打开HTML表单,输入一些数据&amp;提交吧!
提交表格。您应该看到确认已发送:
打开您设置的电子邮件地址的收件箱(上方)
一切 关于此 可自定义 ,您可以轻松 样式/主题 表单 与您最喜欢的 CSS 图书馆 和 商店 Google电子表格中提交的数据 快速分析。
GitHub 上提供 完整说明 :
https://github.com/nelsonic/html-form-send-email-via-google-script-without-server
答案 1 :(得分:23)
你是有道理的,但你似乎误解了发送电子邮件的概念。
HTML在客户端解析,而电子邮件需要从服务器发送。你不能用纯HTML做。我建议编写一个PHP脚本来处理发送给你的电子邮件。
基本上,您的表单操作将需要指向该PHP脚本,而不是MAILTO。在脚本中,检索表单传递的值(在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('youremail@example.com', $_POST['subject'], $_POST['message']);
?>
<p>Your email has been sent.</p>
当然,脚本应该包含一些安全措施,例如检查$ _POST valies是否完全可用,以及其他电子邮件标题(例如发件人的电子邮件),也许是一种处理字符编码的方法 - 但这对于一个简单的例子来说太复杂了;)。
答案 2 :(得分:4)
我不知道你想做什么是可能的。根据我的理解,从Web表单发送电子邮件需要服务器端语言与邮件服务器通信并发送消息。
您运行的是PHP还是ASP.NET?
答案 3 :(得分:2)
我实际上使用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邮件发件人的示例。这里的一些内容是不需要的,但它是我如何使用它,因为我相信有更多有效的方式以相同的方式。
答案 4 :(得分:-3)
<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>