mail_to
mail_to(email_address, name = nil, html_options = {})
public
Creates a link tag for starting an email to the specified email_address, which is also used as the name of the link unless name is specified. Additional <a href="/rails/HTML">HTML</a> options, such as class or id, can be passed in the html_options hash.
You can also make it difficult for spiders to harvest email address by obfuscating them. Examples:
mail_to "me@domain.com", "My email", :encode => "javascript" # => <script type="text/javascript" language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%22%3e%4d%79%20%65%6d%61%69%6c%3c%2f%61%3e%27%29%3b'))</script> mail_to "me@domain.com", "My email", :encode => "hex" # => <a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>
You can also specify the cc address, bcc address, subject, and body parts of the message header to create a complex e-mail using the corresponding cc, bcc, subject, and body html_options keys. Each of these options are URI escaped and then appended to the email_address before being output. Be aware that javascript keywords will not be escaped and may break this feature when encoding with javascript. Examples:
mail_to "me@domain.com", "My email", :cc => "ccaddress@domain.com", :bcc => "bccaddress@domain.com", :subject => "This is an example email", :body => "This is the body of the message." # => <a href="mailto:me@domain.com?cc="ccaddress@domain.com"&bcc="bccaddress@domain.com"&body="This%20is%20the%20body%20of%20the%20message."&subject="This%20is%20an%20example%20email">My email</a>
Javascript encoding DOES work!
grosser assertion is false :
mail_to('xxx@xxx.com', nil, :encode => :javascript) # => "<script type=\"text/javascript\">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%78%78%78%40%78%78%78%2e%63%6f%6d%22%3e%78%78%78%40%78%78%78%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script>"
Use “nil” as the second parameter to tell mail_to that you want to use the first parameter for both text and email link
email_to('xxx@xxx','xxx@xxx',:encode=>'javascript') does NOT work
as i always want the email in the link text, email_to does not help me…
so here comes the rescue!
#http://unixmonkey.net/?p=20 # Takes in an email address and (optionally) anchor text, # its purpose is to obfuscate email addresses so spiders and # spammers can't harvest them. def js_antispam_email_link(email, linktext=email) user, domain = email.split('@') # if linktext wasn't specified, throw email address builder into js document.write statement linktext = "'+'#{user}'+'@'+'#{domain}'+'" if linktext == email out = "<noscript>#{linktext} #{user}(ät)#{domain}</noscript>\n" out += "<script language='javascript'>\n" out += " <!--\n" out += " string = '#{user}'+'@'+''+'#{domain}';\n" out += " document.write('<a href='+'m'+'a'+'il'+'to:'+ string +'>#{linktext}</a>'); \n" out += " //-->\n" out += "</script>\n" return out end