我可以使用mailto链接设置邮件主题和内容吗?

1069

当使用mailto时,是否可以设置邮件的主题/内容?


2
相关 https://css-tricks.com/snippets/html/mailto-links/ - Adriano
15
您可以设置电子邮件的每一个部分。这是我制作的一个工具,使它变得非常简单:https://mailto.now.sh - Dawson B
15个回答

1707

是的,请查看使用 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>

正如评论中所提到的,subjectbody都必须得到适当的转义。对于每个内容,请使用encodeURIComponent(subject)进行处理,而不是为特定情况手工编写代码。

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

%0D%0A // one line break

38
可以使用 HTML 作为正文吗? - Jiew Meng
20
那完全取决于客户需求。通常情况下,不行。 - tripleee
5
作为参考:您不必对主题进行HTML转义。 - Oscar Pérez
26
请注意,W3C要求您按照以下规则编码字符串:字符应该以NFC表示,空格应该作为%20进行转义。 - gordie
7
  • 一份为我带来巨大怀旧感的复古 Angelfire 和 Geocities 链接的赞。
- superphonic
显示剩余9条评论

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

你可以使用这段代码来设置邮件的主题、正文、抄送和密送


84

我创建了一个开源工具,使这一过程变得简单。输入您想要的字符串,即可立即获取mailto

mailto.now.sh

⚡️ 在mailto中模板化完整电子邮件

输入图像描述


2
整洁,这是一个很棒的应用程序! - Madhusoodan P
1
嘿,Dawson,这是一个非常有用的工具。谢谢你提供它。 - Kishan Bharda
太好了,谢谢。这让我不必向客户解释技术细节而感到轻松许多。 - Alexandru Bulat

48

mailto: URL协议在RFC 2368中有定义。同时,将信息编码到URL和URI中的约定在RFC 1738RFC 3986中有定义。这些规定了如何将bodysubject头部包含进URL(URI):

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

具体而言,您必须对电子邮件地址、主题和正文进行百分数编码,并将它们放入上述格式中。百分数编码的文本在HTML中使用是合法的,但是根据HTML4标准,此URL必须实体编码以在href属性中使用:

<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>";
?>

这是一个更深入的例子,如果您的电子邮件中有一个URL,并且该URL具有需要编码的内容:https://dev59.com/xW445IYBdhLWcg3wq8Lp#48267785 - William Entriken

29

您可以通过以下任一方式将主题添加到mailto命令中。

在mailto标记中添加?subject=来添加主题。

<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 来填写抄送和密送字段。

<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:joe@company.com?subject=Your+subject

1
我的“subject”不是文本,而是一个表格。如何添加它? - David
@David,你不能在主题上放置表格,你知道电子邮件主题是如何工作的吗?主题是纯文本字符串。你可以在主题上放置的基本内容最多只有表情符号。 - Macumbaomuerte

10

我将其分成单独的行,以使其更易读。

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

2
这个问题在5年前已经得到了回答。 - varun aaruru
15
它仍然在今天被使用,当你想要邮寄东西时。 - quemeful

7

是的:

使用此工具来尝试mailto表单元素和链接编码。

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

您甚至可以指定很少被人知道和使用的元素:抄送(cc)、密送(bcc)、发件人邮箱。


此外,href字段组合器的一个非常有用的功能是能够将所有字符编码为十六进制(例如:[Test Zõne] 变成 %5BTest%20Z%C3%B5ne%5D,这可能会避免一些垃圾邮件机器人)。 - Armfoot
我的意思是,如果您选择对所有字符进行编码,它们都将转换为HTML符号&#x(避免一些垃圾邮件机器人)。 - Armfoot
7
链接已失效。 - Bram Vanroy

6

需要在空格之间加上“+”吗?在 Gmail 上不加也可以正常工作。 - SuperUberDuper
2
链接已失效 - Peter Johnson

5

是的,你可以像这样:

mailto: email@host.com?subject=something

3
我认为那个空格不应该在那里。 - nafg
this should be without space. - Hassan Raza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接