如何从html中的按钮发送包含标题subject
和message
的指定初始值的电子邮件,例如
<form method="post" action="mailto:email.com?subject=subject&message=message">
其中subject
和message
是从form
获取的值?
答案 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的body
和mailto:
属性} <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(包含subject
和body
属性)。这适用于我测试的浏览器和电子邮件客户端的所有组合,这些客户端是最近的(2015)版本:
额外提示:在我的用例中,我向电子邮件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">