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

时间:2011-09-16 20:00:24

标签: html forms

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

当我使用时:

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

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

有没有办法格式化电子邮件的输出?而不仅仅是字段名称和输入值的列表。

感谢。

5 个答案:

答案 0 :(得分:46)

&GT; 2019回答 =使用Google Apps脚本的简易方式( 5分钟

我们昨天有一个类似的挑战要解决,我们使用Google Apps脚本解决了它!

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

该解决方案需要 5分钟 来实施,并且我已经记录了 分步说明 https://github.com/nelsonic/html-form-send-email-via-google-script-without-server

简要概述

一种。使用示例脚本,部署Google App脚本

将示例脚本部署为Google电子表格APP脚本: google-script-just-email.js

3-script-editor-showing-script

  

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

B中。创建HTML表单并将action设置为App URL

使用示例html文件: index.html 创建一个基本形式。

7-html-form

  

请记住 APP网址粘贴到HTML表单中的action表单中。

℃。在浏览器中测试HTML表单

在浏览器中打开HTML表单,输入一些数据&amp;提交吧!

html form

提交表格。您应该看到确认已发送: form sent

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

email received

完成。

  

一切 关于此 可自定义 ,您可以轻松    样式/主题 表单 与您最喜欢的 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?

ASP.NET Example

PHP Example

答案 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:&#xa0;
    <TEXTAREA name="Body">
    kfdskfdksfkds
    </TEXTAREA>
    <BR>
    <INPUT type="submit" value="Submit"> 
</FORM>