我可以使用mailto:设置电子邮件的主题/内容吗?


Answers:


1458

是的,请使用mailto查看所有提示和技巧:http : //www.angelfire.com/dc/html-webmaster/mailto.htm

mailto主题示例:

<a href="mailto:no-one@snai1mai1.com?subject=free chocolate">example</a>

mailto内容:

<a href="mailto:no-one@snai1mai1.com?subject=look at this website&body=Hi,I found this website and thought you might like it http://www.geocities.com/wowhtml/">tell a friend</a>

正如评论中提到的那样,两者subject和都body必须正确地转义。encodeURIComponent(subject)在每种情况下使用,而不是为特定情况手工编码。

Hoody在评论中所述,您可以通过在字符串中添加以下编码序列来添加换行符:

%0D%0A // one line break

29
身体可以使用HTML吗?
孟梦

18
那完全是针对客户的。在一般情况下,不会。
2013年

4
只是作为参考:你不必htmlescape主题
奥斯卡·佩雷斯

17
请注意,W3C要求您按照以下规则对字符串进行编码:字符应以NFC表示,空格应转义为%20。
gordie

95
如果有人想知道您是否还可以使用%0D%0A序列在正文中添加换行符-cubetoon.com/2008/…–
Hoody

123
<a href="mailto:manish@simplygraphix.com?subject=Feedback for 
webdevelopersnotes.com&body=The Tips and Tricks section is great
&cc=anotheremailaddress@anotherdomain.com
&bcc=onemore@anotherdomain.com">Send me an email</a>

您可以使用此代码设置主题,正文,抄送,密件抄送


38

mailto:URL方案定义在RFC 2368。另外,在RFC 1738RFC 3986中定义了将信息编码为URL和URI的约定。这些规定了如何将bodysubject标头包含在URL(URI)中:

mailto:infobot@example.com?subject=current-issue&body=send%20current-issue

具体来说,您必须对电子邮件地址,主题和正文进行百分比编码,然后将其放入上述格式。百分比编码的文本在HTML中使用是合法的,但是href根据HTML4标准,此URL必须是实体编码后才能在属性中使用:

<a href="mailto:infobot@example.com?subject=current-issue&amp;body=send%20current-issue">Send email</a>

最普遍的是,这是一个简单的PHP脚本,按上述内容进行编码。

<?php
$encodedTo = rawurlencode($message->to);
$encodedSubject = rawurlencode($message->subject);
$encodedBody = rawurlencode($message->body);
$uri = "mailto:$encodedTo?subject=$encodedSubject&body=$encodedBody";
$encodedUri = htmlspecialchars($uri);
echo "<a href=\"$encodedUri\">Send email</a>";
?>

不太正确,如在示例中提供的那样,尽管定义了$ encodeUri,但使用了变量$ encodeUrl;)
Alex

:-p在那里固定
William Entriken '18

这是因为如果您的电子邮件中有一个URL一个更深刻的例子,并且URL有东西,需要编码:stackoverflow.com/questions/4744888/...
威廉Entriken

1
我认为该行中有错别字$uri = ...:的&前面subject应该是?
jost21 '19

24

您可以使用以下任一种方式将添加的主题添加到mailto命令。在邮件到标签中添加“主题邮件到”。

<a href="mailto:test@example.com?subject=testing out mailto">First Example</a>

我们还可以通过在标记的末尾添加&body来在消息的正文中添加文本,如以下示例所示。

 <a href="mailto:test@example.com?subject=testing out mailto&body=Just testing">Second Example</a>

除了正文,用户还可以键入&cc或&bcc来填写CC和BCC字段。

<a href="mailto:test@example.com?subject=testing out mailto&body=Just testing&cc=test1@example.com&bcc=test1@example.com">Third
    Example</a>

如何将主题添加到mailto标签


13

我创建了一个开源工具来简化此过程。输入您想要的字符串,您将立即获得mailto

mailto.now.sh

Template지️模板中的完整电子邮件

在此处输入图片说明


12
mailto:joe@company.com?subject=Your+subject

1
subject不是文字。这是个桌子。如何添加。
大卫

9

我将其分成几行以使其更具可读性。

<a href="

    mailto:johndoe@gmail.com

    ?subject=My+great+email+to+you

    &body=This+is+an+awesome+email

    &cc=janedoe@gmail.com

    &bcc=billybob@yahoo.com

">Click here to send email!</a>

1
这个问题在5年前被回答了
varun aaruru

14
今天,当您想要邮寄邮件时,仍会使用它
端庄


7

是:

使用来试验mailto表单元素和链接编码。

您可以在表单中输入主题,正文(即内容)等,单击按钮,然后查看可以粘贴到页面中的mailto html链接。

您甚至可以指定电子邮件中鲜为人知和使用的元素:抄送,密件抄送。


该href字段编辑器的另一个非常有用的功能是能够将所有字符编码为十六进制(例如:[Test Zõne]变为%5BTest%20Z%C3%B5ne%5D,这可以避免某些垃圾邮件机器人)。
Armfoot

我的意思是,如果您选择对所有字符进行编码,它们都将转换为HTML表示法&#x(避免使用某些垃圾邮件程序)。
Armfoot

4
该链接已死。
布拉姆·范罗伊

6

是的,您可以这样:

mailto: email@host.com?subject=something

2
我认为空间不应该存在吗?
2013年

这应该没有空间。
哈桑·拉扎

5

请注意,根据RFC 2368,不可能在消息正文中使用HTML :

特殊的hname“ body”表示关联的hvalue是消息的主体。“正文”名称应包含消息的第一个文本/纯文本正文部分的内容。mailto URL主要用于生成短文本消息,实际上是自动处理的内容(例如邮件列表的“订阅”消息),而不是常规的MIME正文。

信用:https : //stackoverflow.com/a/13415988/1835519


2
问题是询问如何设置主题和内容。它没有提到格式化。虽然这是需要注意的一个有用的东西上的答案,你留下了什么位可能的,以及如何去实现它。没有这些,这是评论,而不是答案。
昆汀

Jure,我真的很感谢您将其作为对这个问题的答案,因为这正是我需要找出并正在问自己的问题。因此,尽管Quentin认为这不能回答OP问题,但它回答了我一直在寻找的我提出的这篇文章。非常感谢Jure!
user1567291

3

这是一个可运行的代码段,可帮助您生成mailto:带有可选主题和正文的链接。

function generate() {
  var email = $('#email').val();
  var subject = $('#subject').val();
  var body = $('#body').val();

  var mailto = 'mailto:' + email;
  var params = {};
  if (subject) {
    params.subject = subject;
  }
  if (body) {
    params.body = body;
  }
  if (params) {
    mailto += '?' + $.param(params);
  }

  var $output = $('#output');
  $output.val(mailto);
  $output.focus();
  $output.select();
  document.execCommand('copy');
}

$(document).ready(function() {
  $('#generate').on('click', generate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="email" placeholder="email address" /><br/>
<input type="text" id="subject" placeholder="Subject" /><br/>
<textarea id="body" placeholder="Body"></textarea><br/>
<button type="button" id="generate">Generate & copy to clipboard</button><br/>
<textarea id="output">Output</textarea>


1

如果您想将html内容添加到电子邮件中,请对邮件正文的html代码进行url编码,然后将其包含在mailto链接代码中,但是麻烦的是,您无法通过此链接将电子邮件的类型设置为从纯文本到html,默认情况下,使用链接的客户端需要其邮件客户端发送html电子邮件。如果要测试,这里是一个简单的mailto链接的代码,链接中包裹了一个图片(添加了用于可见性的角度样式网址):

<a href="mailto:?body=%3Ca%20href%3D%22{{ scope.url }}%22%3E%3Cimg%20src%3D%22{{ scope.url }}%22%20width%3D%22300%22%20%2F%3E%3C%2Fa%3E">

html标签是url编码的。


您是否还可以发布一个示例,其中正文<a href>只是在href和结束标记之间包含文本?谢谢
user1567291

<ahref="<与以上相同>“>这是链接文本</a> @ user1567291
serdarsenay

这行不通。电子邮件客户端只会将所有html标签显示为文本,而不是将其作为富文本文档进行处理。
ΕГИІИО
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.