html按钮发送电子邮件

时间:2011-04-24 20:52:06

标签: html forms email

如何从html中的按钮发送包含标题subjectmessage的指定初始值的电子邮件,例如

<form method="post" action="mailto:email.com?subject=subject&message=message">

其中subjectmessage是从form获取的值?

8 个答案:

答案 0 :(得分:35)

此方法在我的浏览器中似乎不起作用,并且环顾四周表明,为mailto链接/操作指定标题的整个主题都是稀疏支持的,但这可能对此有帮助......

HTML:

<form id="fr1">
    <input type="text" id="tb1" />
    <input type="text" id="tb2" />
    <input type="button" id="bt1" value="click" />
</form>

JavaScript(使用jQuery):

$(document).ready(function() {
    $('#bt1').click(function() {
        $('#fr1').attr('action',
                       'mailto:test@test.com?subject=' +
                       $('#tb1').val() + '&body=' + $('#tb2').val());
        $('#fr1').submit();
    });
});

请注意我在这里做的事情。表单本身没有与之关联的操作。并且提交按钮实际上不是submit类型,它只是button类型。使用JavaScript,我绑定到该按钮的click事件,设置表单的action属性,然后提交表单。

它正在工作,因为它将表单提交到mailto操作(弹出我的默认邮件程序并向指定地址打开一条新邮件),但对我来说(Safari,Mail.app)它是实际上并没有在结果消息中指定主题或正文。

HTML并不是一个非常好的媒介,因为我确信其他人在我输入时会指出这一点。这可能适用于某些浏览器和/或某些邮件客户端。然而,现在用户将拥有一个胖邮件客户端甚至不是一个安全的假设。我不记得上次打开我的时候了。 HTML的mailto是一些遗留功能,而且如果可能的话,你也可以在服务器端执行邮件操作。

答案 1 :(得分:28)

您可以使用mailto,这是HTML代码:

<a href="mailto:EMAILADDRESS">

EMAILADDRESS替换为您的电子邮件。

答案 2 :(得分:8)

作为大卫notes,他的建议实际上并未满足OP的请求,即带有主题和消息的电子邮件 。它不起作用,因为大多数(可能是所有)浏览器和电子邮件客户端的组合在提供{{1}时不接受subject URI的bodymailto:属性} <form>

但这是一个有效的例子:

HTML(带Bootstrap个样式):

action

JavaScript(使用jQuery):

<p><input id="subject" type="text" placeholder="type your subject here" 
    class="form-control"></p>
<p><input id="message" type="text" placeholder="type your message here" 
    class="form-control"></p>
<p><a id="mail-link" class="btn btn-primary">Create email</a></p>

注意:

  • 未使用具有关联<script type="text/javascript"> function loadEvents() { var mailString; function updateMailString() { mailString = '?subject=' + encodeURIComponent($('#subject').val()) + '&body=' + encodeURIComponent($('#message').val()); $('#mail-link').attr('href', 'mailto:person@email.com' + mailString); } $( "#subject" ).focusout(function() { updateMailString(); }); $( "#message" ).focusout(function() { updateMailString(); }); updateMailString(); } </script> 属性的<form>元素。
  • 类型action的{​​{1}}元素也未使用。
    • <input>样式为按钮(此处使用Bootstrap)替换button
    • <a>需要<input type="button">,因为focusout()标记的updateMailString()属性在输入字段值更改时不会自动更新。
    • 如果输入字段已预先填充,则在加载文档时也会调用
    • <a>
  • 此外,href用于在Outlook中输入引号(“)等字符。

在此方法中,在updateMailString()元素的encodeURIComponent()标记中提供mailto: URI(包含subjectbody属性)。这适用于我测试的浏览器和电子邮件客户端的所有组合,这些客户端是最近的(2015)版本:

  • 浏览器:Firefox / Win&amp; OSX,Chrome / Win&amp; OSX,IE / Win,Safari / OSX&amp; iOS,Opera / OSX
  • 电子邮件客户端:Outlook / Win,Mail.app / OSX&amp; iOS,Sparrow / OSX

额外提示:在我的用例中,我向电子邮件a添加了一些上下文文本。通常,我希望该文本包含换行符。 href(回车和换行)在我的测试中有效。

答案 3 :(得分:2)

您可以使用锚点尝试使用mailto:打开预先填充的用户默认邮件客户端,但无法发送实际的电子邮件。 *显然也可以通过表单操作执行此操作,但浏览器支持多种多样且不可靠,因此我不建议。

HTML无法发送邮件,您需要使用像php这样的服务器端语言,这是另一个话题。如此在SO或其他地方如何做到这一点有很多很好的资源。

如果你使用的是php,我会看到SwiftMailer建议了很多。

答案 4 :(得分:2)

您无法直接发送包含HTML表单的电子邮件。但是,您可以将表单发送到您的Web服务器,然后生成带有服务器端程序的电子邮件。 PHP。

另一种解决方案是像使用“mailto:”一样创建链接。这将从用户打开本地电子邮件程序。然后,他/她可以发送预先填好的电子邮件。

当您决定如何做时,您可以在本网站上提出另一个(更具体的)问题。 (或者您可以在互联网上的某个地方搜索解决方案。)

答案 5 :(得分:2)

我找不到真正满足原始问题的答案,所以我整理了一个简单的免费服务(PostMail),允许您发送标准的HTTP POST请求来发送电子邮件。当您注册时,它会为您提供可以复制的代码。粘贴到您的网站。在这种情况下,您只需使用表单帖子:

HTML:

<form action="https://postmail.invotes.com/send"
    method="post" id="email_form">

    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message"></textarea>
    <!-- replace value with your access token -->
    <input type="hidden" name="access_token" value="{your access token}" />

    <input type="hidden" name="success_url"
      value=".?message=Email+Successfully+Sent%21&isError=0" />
    <input type="hidden" name="error_url"
      value=".?message=Email+could+not+be+sent.&isError=1" />

    <input id="submit_form" type="submit" value="Send" />
</form>

同样,在完整披露中,我创建了这项服务,因为我找不到合适的答案。

答案 6 :(得分:0)

 <form action="mailto:someone@example.com" method="post"               enctype="text/plain">
 Name:<br>
<input type="text" name="name"><br>
 E-mail:<br>
<input type="text" name="mail"><br>
Comment:<br>
<input type="text" name="comment" size="50"><br><br>
<input type="submit" value="Send">
<input type="reset" value="Reset">

答案 7 :(得分:0)

@ user544079

即使现在已经很老了,也无关紧要,我正在回复帮助像我这样的人! 它应该是这样的:

<form method="post" action="mailto:$emailID?subject=$MySubject &message= $MyMessageText">

下面 $ EMAILID, $ MySubject, $ MyMessageText是您从FORM或DATABASE表中分配的变量,或者您可以在代码本身中分配值。或者你可以像这样放置代码(通常不使用它):

<form method="post" action="mailto:admin@website.com?subject=New Registration Alert &message= New Registration requires your approval">