it-swarm.cn

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

我有一个供人们填写的HTML表单,所以我想要它,因此当他们单击“提交”按钮时,它将仅发送电子邮件,而不显示他们的电子邮件并要求他们自己发送消息。

当我使用时:

<form action="MAILTO:[email protected]"... >

所有要做的就是打开一个新窗口,并填充电子邮件的正文,但是我希望它仅发送电子邮件。

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

谢谢。

35
Joe W

实际上,我现在使用ASP C#发送电子邮件,内容类似于:

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

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

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

通过Google发送来自HTML表单而没有后端(Server)的电子邮件!

该解决方案需要5分钟来实现,并且我已经逐步记录了说明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-script-editor-showing-script

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

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

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

7-html-form

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

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

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

html form

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

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

email received

做完了.

一切关于可定制,您可以轻松样式/主题form和您最喜欢的CSSStore Google Spreadsheet 中将提交的 data 用于快速分析。
完整说明可在 GitHub 上找到:
https://github.com/nelsonic/ html-form-send-eend-email-via-google-script-without-server

47
nelsonic

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

HTML是在客户端解析的,而电子邮件则需要从服务器发送。您不能使用纯HTML来做到这一点。我建议编写一个PHP脚本来处理为您发送的电子邮件。

基本上,代替MAILTO,表单的动作将需要指向PHP脚本。在脚本中,检索由表单传递的值(在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>

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

23
mingos

我不知道您想做什么。据我了解,从Web表单发送电子邮件需要服务器端语言才能与邮件服务器进行通信并发送消息。

您正在运行PHP还是ASP.NET?

ASP.NET示例

PHP示例

4
raydowe