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

Joe*_*e W 37 html forms

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

我用的时候:

<form action="MAILTO:emailaddress@email.com"... >
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

nel*_*nic 50

> 2018答案 = 使用Google Apps脚本的简便方法(5分钟)

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

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

该解决方案需要5分钟才能实现,我已逐步说明了这些说明:https://github.com/nelsonic/ html-form-send-email-via-google-script-without-server

简要概述

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

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

3脚本编辑器,显示脚本

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

B.创建HTML表单并将其设置action为应用程序URL

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

7-HTML的形式

请记住将您的APP网址粘贴到actionHTML表单中的表单中.

C.在浏览器中测试HTML表单

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

HTML表单

提交表格.您应该看到确认已发送: 发送表格

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

收到电子邮件

完成.

一切有关这是定制的,你可以很容易 的风格/主题 形式,用你喜欢的 CSS 存储所提交的数据谷歌电子表格 进行快速分析.
完整说明,可在 GitHub上:
https://github.com/nelsonic/ 的HTML表单发送的电子邮件-通过-谷歌脚本-无需服务器

  • 哇@nelsonic 这非常有帮助并且解释得很好,谢谢你的帮助 (2认同)
  • 请[编辑]将图像中使用的文本粘贴到您的答案中,以便可以在所有设备上阅读、引用、编辑并通过搜索找到它。就目前情况而言,[您的图像使得很难回答您的问题或让有相关问题的人很难找到您的问题](//meta.stackoverflow.com/q/285551)。请参阅[有关格式设置的文档](https://stackoverflow.com/editing-help),了解如何使文本在不借助图像的情况下美观地显示的提示以及[mcve]。 (2认同)

min*_*gos 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>
Run Code Online (Sandbox Code Playgroud)

email.php:

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

当然,脚本应该包含一些安全措施,例如检查$ _POST valies是否完全可用,以及其他电子邮件标题(例如发件人的电子邮件),也许是一种处理字符编码的方法 - 但这也是复杂的快速例子;).


Joe*_*e W 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是使用 gmail 作为 smtp 邮件发件人的示例。这里的一些内容是不需要的,但这就是我使用它的方式,因为我确信以同样的方式有更有效的方法。