Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Spaces in mailto: links #74

Closed
manuelcabral opened this Issue · 9 comments

2 participants

@manuelcabral

The spaces in mailto: links are being displayed as "+" characters in Thunderbird. Removing the .replace(/%20/g, '+') from URI.encodeQuery() solves the problem, but it guess it must be there for a reason.
I'm currently using a fork of the repository where this line is removed. Would it be useful to somehow add an option to perform the encoding without replacing spaces by + characters?

@rodneyrehm
Owner

Can you also check this behavior for other mail clients (such as Outlook and whatever people use)? Mail.app (default mail client on Mac OS X) behaves like you described %20 is ok, + is taken literally. Testcase

@rodneyrehm
Owner

Ok, so far Mail.app, Outlook, Thunderbird require %20, GMail will accept both (probably because it's a webapp…) any other clients one would want to check?

@manuelcabral

I got the same results in GMail and Mail.app. Here are some email client statistics: http://www.campaignmonitor.com/resources/will-it-work/email-clients/ . I don't have any other client here, but I can try hotmail and yahoo later.

@rodneyrehm
Owner

So, this would call for different encodeQuery() behavior depending on protocol. I'm not sure how cool that really is. The problem is that the protocol can be changed after modifying the query string (which causes the de/encoding), like URI('?subject=foo+bar').protocol('mailto').toString()

Maybe we can introduce a protocol hook. It would be called every time the protocol is touched. That would allow switching the encoding states (for further modification) and trigger a de/encode to convert + to %20 and vice versa.

(just noting thoughs…)

@manuelcabral

Would it also be possible to convert the spaces when the data is read, and check then what the protocol is?

@rodneyrehm
Owner

nope. The example URI('?subject=foo+bar').protocol('mailto').toString() should've proven that. But I guess we could hook things into .normalize() and clean things up there. Trouble is, you'd have to call that method every time just to make sure you've got the right encoding.

@rodneyrehm
Owner

I've fixed this in master - it will be included in the next release. thank you for your help!

@rodneyrehm rodneyrehm closed this
@rodneyrehm
Owner

You can now make a URI instance escape spaces with %20 rather than + by calling .escapeQuerySpace(false) - that should help. It doesn't cover converting from one to the other, though!

@manuelcabral

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.