2010-04-06 55 views
9

嗨,大家好,我发现,为了打开Gmail撰写屏幕你必须先登录并打开以下链接:预填Gmail撰写屏幕,HTML文本

https://mail.google.com/a/domain/?view=cm&fs=1&tf=1&source=mailto&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&cc=WHOEVER%40COMPANY.COM&bcc=WHOEVER%40COMPANY.COM&body=PREPOPULATEDBODY

更换变量填写表格中的相应位置。但是,如果我想进入身体多行文本或换行符,即使我urlencode它只是不工作。这里的任何想法?

+0

当你进行网址编码时,你用什么换行符?为什么不使用标准的'mailto:'URI方案? ('href =“mailto:[email protected]?subject = SubjectHere”') – Anthony 2010-04-06 10:14:48

+0

基本上这个链接打开gmail撰写屏幕 - 我试过urlencoding换行符以及html中断,但它没有工作:( - 它为谷歌基于应用的项目 – Ali 2010-04-06 11:10:22

+0

纠正了问题中提供的链接,因为所提供的链接转到服务器错误页面,可能对其他人有帮助。 https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= WHOEVER%40COMPANY.COM&su = SUBJECTHERE&cc = WHOEVER%40COMPANY.COM&bcc = WHOEVER%40COMPANY.COM&body = PREPOPULATEDBODY – 2013-06-29 05:46:02

回答

11

检查您的UrlEncode方法是否真的将换行符转换为“%0a”。这里的一个2行电子邮件主体的一个示例:

https://mail.google.com/mail/?view=cm&ui=2&tf=0&fs=1&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&body=LINE1%0aLINE2

+2

谢谢你解决它很好,但现在我有太多的文字的另一个问题 - http://stackoverflow.com/questions/2590467/prefilling-large-volumes-of-body-text-in-gmail-compose-getting -一个-request-uri-too – Ali 2010-04-07 06:40:01

+1

撰写网址的工作真的很棒:)。谢谢。有没有什么办法可以打开邮件窗口,就好像它的回复或转发一样?这样用户可以直接转发或回复电子邮件。 – 2014-07-29 03:59:52

+0

@Kartik找到任何解决方案? – 2015-10-04 02:31:08

2

我用标准JavaScript encodeURIComponent方法(),用于对多体。有效。

那些谁也想预填充通用的Gmail,而不是应用程序域特定帐户,使用这个网址来代替:

https://mail.google.com/?view=cm&fs=1&tf=1& ....

8

的Gmail有什么HTML5的registerProtocolHandler()发出支持。

例子:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test"); 

这就是Gmail的希望您使用。当然,修改特定于领域的撰写URI的开始。

但是,它会自行加载组合表单(未与收件箱页面集成)。所以,如果你想融入收件箱页面的撰写格式,则需要负荷:

"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5" 

代替。但是,这要求您首先解析mailto URI以获取hfvalues并修复它们的百分比编码以确保它们适合发送HTTP URI。请参阅下面的更多信息。

现在,Gmail对HTML5撰写URI所做的工作是百分比解码url参数以获取mailto URI。然后,它解析mailto URI以获取hfvalues。然后,它使用这些hfvalue来构建一个像收件箱集成的URI并将您重定向到它。

Gmail的HTML5方法存在的问题是,它不会将hfvalue中的'+'字符百分比编码为“%2B”。最终的结果是,mailto URI中的'+'字符(它们不是mailto URI中的空格)以Gmail撰写形式中的空格出现。

要解决Gmail的错误,你只是做:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B")); 

代替。

这个错误在很多年前就有报道,但Gmail拒绝修复它。你也应该看到,对于收件箱集成的组合URI,如果你有mailto URI“mailto:?subject = 1 + 2”,你需要确保你发送了su = 1%2B2组成URI而不是su = 1 + 2。后者将导致在主题字段中的空格而不是“+”。这部分不是Gmail的错误。这就是HTTP的工作原理。

你可以看到my Gmail Compose Extension for Opera(解压缩)的来源,看看我如何做HTML5的方式。这很简单。但是,它不包含+到%2B的解决方法。

但是,您可以看到我正在测试的the newer version of the extension(只需要有人在首选项中测试特定于域的选项)以进行更高级的处理。这个使用my custom, generic mailto URI parser来规范mailto URI和它的hfvalues来处理'+'大小写,不安全的字符和重复的hfvalues。它还提供了一个选项来选择是否要使用HTML5撰写URI。

你也可以看看this User JS script for Opera如何做事情。

对于前面提到的重复hfvalue问题以及其他mailto URI内容,请参阅my mailto URI spec,其用于RFC6068的研究和反馈。

注意:仅仅因为Gmail用户启用了丰富的文本编辑功能,这并不意味着Gmail将接受撰写URI中的HTML标记并将其视为同样的内容。它都被解释为文本。

+0

很好的解释。太糟糕了,这不能被追溯性地接受为答案。 – Palpatim 2012-09-05 21:21:58

+0

您是否知道是否可以将[email protected]与这些网址结合起来,以便选择另一个GMail帐户? – oodavid 2014-04-10 09:50:25

+0

@oodavid我不知道*,但我认为不是,并假设它是由cookie完成的。 – Shadow2531 2014-04-11 05:54:48

1

目前(2014年2月),以预填充撰写屏幕,并学科领域,用途:

https://mail.google.com/mail/?&v=b&cs=wh&[email protected]&subject=subject%20goes%20here 

注:cs=wh是显著,为撰写超链接使用cs=b,不自动填充。

+0

这适用于我。 – 2015-01-22 15:19:18

0

另一个限制是GET请求被限制到一定数量的字符,因此尝试使用MAILTO + GET params方法将不适用于较大的内容。有没有人找到另一种方式通过某种Web请求将更大的内容推送到新的Compose窗口?

从我可以告诉这将是困难的,因为mailto实际上是一个浏览器动作正确吗?

0

感谢您的提示。其他回复中尚未指定的一件事是,如果您使用多个帐户(如个人帐户和专业帐户)登录到Gmail,则使用https://mail.google.com/a/domain.com/而不是https://mail.google.com/mail/可以指定要使用哪个邮箱发送消息。否则,Gmail会首先加载您登录的帐户。