以 HTML 格式发送电子邮件

Posted

技术标签:

【中文标题】以 HTML 格式发送电子邮件【英文标题】:Send Email on HTML 【发布时间】:2014-06-22 00:05:01 【问题描述】:

我正在完全从头开始制作一个网站,当我想在客户按下提交按钮时收到一封电子邮件时,我遇到了一个问题。这是我在表单标签上的代码。

我做错了什么?

<form id="contactform" method="post" action="MAILTO:myemail@hotmail.com?    subject=subject&message=message">
  <p class="contact1"><label for="name">Name</label></p>
  <input id="name" name="name" placeholder="First and last name" required="" tabindex="1" type="text">

  <p class="contact"><label for="email">Email</label></p>
  <input id="email" name="email" placeholder="example@hotmail.com" required="" tabindex="2" type="text">

  <p class="contact"><label for="Subject">Subject</label></p>
  <input id="subject" name="subject" placeholder="Subject" required="" tabindex="2" type="text">

  <p class="contact"><label for="comment">Your Message</label></p>
  <textarea name="comment" id="comment" tabindex="4"></textarea> <br>
  <input name="submit" id="submit" tabindex="5" value="Send Message" type="submit">
</form>

【问题讨论】:

mailto: 用于链接&lt;a&gt;,而不是表单。 我该如何解决这个问题?我可以在我有提交按钮的最后一个输入标记中包含 标记吗?因为我尝试了几种方法,但无法弄清楚。 你不能。您必须使用 php 等服务器端协议。 php 就是这样。我将开始这样做。感谢您的帮助 我一开始就告诉过你它并不总是有效,我使用 PHP 来完成这些任务 【参考方案1】:

解决办法:

不可能使用 htmljavascript、CSS 或任何客户端语言发送电子邮件。你必须去服务器端。电子邮件最常见的选择是 PHP。所以你的开始表单标签应该是这样的:

<form method="POST" action="mailer.php">

然后mailer.php中的代码将是:

$name = $_POST["name"];
$message = $_POST["message"];
mail("your_email@site.com", "Subject", "Message from your site. \n Name: ".$name." \n Message: ".$message);

请记住,这是一个非常基本的电子邮件脚本,可以防止脚本注入和 XSS。

【讨论】:

【参考方案2】:

为了实现这一点,您需要一些级别的脚本(我认为是服务器端...不确定客户端是否可以这样做...)将您的值保存在占位符变量中,然后重新绘制屏幕然后将它们注入&lt;a&gt;标签。

如果您想简单地使用主题行,甚至正文文本预先填充标准链接,并使用个人默认邮件客户端,您可以这样修饰链接:

<a href="mailto:someone@yoursite.com?subject=This is an example SL
&body=Your body copy can go here \n ... and new lines can be made like that.
&cc=justincaseyouwantit@yoursite.com&bcc=final-protection@yoursite.com">
Click here to send an email</a>

如果您想使用表单来构建这些链接,您必须将表单的输入捕获为变量,然后使用定义的这些变量构建链接,然后将其回显到屏幕上。

DEMO

【讨论】:

【参考方案3】:

你完全错了。

当用户按下提交按钮时。表单将被重定向到新页面,并带有action 属性中提供的链接。

请记住,大多数用户的系统上都安装了一些默认的电子邮件客户端。我将 Google Mail 设置为默认,有些人可能有 Outlook,我们中的一些人喜欢使用 Thunderbird(由 Mozilla 提供)。

这些程序将有自己的算法来发送电子邮件。所以你使用的代码永远不会成功。如果是,那么它会向您发送一封电子邮件

发件人:client_email 主题:主题 正文:

body 标签中没有数据,因为您根本没有包含该方法。

以上将是您收到的电子邮件。此外,如果您这样做,表单数据将丢失,并且软件会尝试向用户询问数据作为一个新的循环。

我认为您需要执行以下操作。

<form id="contactform" method="post" action="send_email.html"> 
    <p class="contact1"><label for="name">Name</label></p> 
    <input id="name" name="name" placeholder="First and last name" required="" tabindex="1" type="text">     

    <p class="contact"><label for="email">Email</label></p> 
    <input id="email" name="email" placeholder="example@hotmail.com" required="" tabindex="2" type="text">       

    <p class="contact"><label for="Subject">Subject</label></p> 
    <input id="subject" name="subject" placeholder="Subject" required="" tabindex="2" type="text">   

    <p class="contact"><label for="comment">Your Message</label></p> 
    <textarea name="comment" id="comment" tabindex="4"></textarea> <br>
    <input name="submit" id="submit" tabindex="5" value="Send Message" type="submit">
</form>

然后,在服务器端处理电子邮件发送请求,并使用您正在使用的服务器端语言自行发送。

这样,您还将收到电子邮件,以及用户撰写并尝试发送给您的内容。

【讨论】:

我明白你在说什么,除了最后两句话。您是什么意思在服务器端处理电子邮件发送请求并使用您正在使用的服务器端语言自己发送?我用于我的网站的唯一语言是 html5、css3、javascript 和一些我复制的 jquery。我还没有使用任何php。我可以仅将 php 用于联系表格吗? 当您使用 PHP for Contact 表单时,您也可以将其用于发送电子邮件过程 :) 不是吗?我想你可以。它只是几行,在用户界面中也会更好。 :) 自行处理请求,不让第三方使用信息发送电子邮件...:)【参考方案4】:

它可能并不总是有效。看http://webdesign.about.com/cs/forms/a/aamailtobroke.htm

就我个人而言,我从未使用过这样的解决方案。我总是使用 PHP 发送电子邮件

当我使用您的解决方案时,我的电子邮件客户端可以正确打开,但邮件内容看起来不太好。

但是当我使用时:

<form action="mailto:admin@example.com" enctype="text/plain" method="post">
<p>Name: <input name="Name" type="text" id="Name" size="40"></p>
<p>E-mail address: <input name="E-mail" type="text" id="E-mail" size="40"></p>
<p>Comment:</p>
<p><textarea name="Comment" cols="55" rows="5"
id="Comment"></textarea></p>
<p><input type="submit" name="Submit" value="Submit"></p>
</form>

真的很好用

【讨论】:

当我建议使用 PHP 并告诉用户解决方案并不总是有效时,我的回答有什么问题? 原始 DV 很可能是由于对另一个站点的简单链接的糟糕回答。您现在已经对其进行了改进,但也许下次从一开始就完全格式化它以避免 DV 是的,但答案是正确的 - PHP 发送任何数据比使用此方法更可靠,因为它并不总是有效(链接中描述的内容)。我添加了工作解决方案,但似乎 @user3604922 选择了 php 解决方案 再次... 正确 错误,指向另一个网站的简单链接通常在SO社区。在这里详细说明和努力花费在构建答案上通常是最佳实践 - 而不是:“哦,我使用 jquery 来解决这个问题,它很简单......code.jquery.com/jquery-1.11.1.js” 感谢您帮助我 Marcin。我选择使用 php 来解决我的问题,因为它对于 html 来说如果不是不可能的话也太复杂了。再次感谢。【参考方案5】:

我不得不说:我不是百分百确定。 但是不可能通过 HTML 发送电子邮件。 你需要某种服务器。不妨试试 Google AppEngine,它是免费的(直到有限制),易于学习,并且有一个额外的 E-Mail API。

【讨论】:

这种类型的“答案”作为评论会更好。我可以看到您是新来的 - 您可能想查看常见问题解答以更好地了解期望。

以上是关于以 HTML 格式发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

django 使用 django-registration 以 html 格式发送电子邮件

什么是“HTML格式发送邮件”?

python 使用嵌入的附件和图像以HTML格式发送电子邮件。

Word邮件合并不能发送HTML格式以及怎么带附件?

如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)

通过 Mule 4 发送电子邮件时 JSON 数组到表结构格式