在HTML上发送电子邮件

时间:2014-05-05 15:51:46

标签: html html-email html-form

我正在从头开始创建一个网站,当我想在客户端按下提交按钮时收到电子邮件时,我遇到了问题。这是我在表单标签上的代码。我做错了什么?

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

5 个答案:

答案 0 :(得分:1)

解决方案:

使用HTML,JavaScript,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。

答案 1 :(得分:0)

为了解决这个问题,你需要一些级别的脚本(服务器端,我认为......不确定客户端是否可以这样做......)将值保存在占位符变量中,然后重新绘制屏幕使用,然后将它们注入<a>标记。

如果您想简单地预先填充带有SUbject行的标准链接,甚至是正文文本,并使用个人默认邮件客户端,您可以打扮这样的链接:

<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

答案 2 :(得分:0)

你做错了。

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

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

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

发件人:client_email
主题:主题
身体:

正文标记中没有数据,因为您根本没有包含该方法。

以上将是收到的电子邮件。此外,如果您这样做,表单数据将丢失,软件将尝试向用户询问数据是否为新周期。

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

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

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

通过这种方式,您还可以收到电子邮件以及用户撰写并尝试发送给您的内容。

答案 3 :(得分:-2)

我不得不说:我不是百分百肯定的。 但是不可能通过HTML发送电子邮件。 你需要某种服务器。也许尝试谷歌AppEngine它是免费的(直到一些限制),易于lern并有一个额外的电子邮件API。

答案 4 :(得分:-2)

它可能并不总是有效。看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>

它工作得很好