Reputation: 15259
I am using Ruby on Rails 3 and I would like to disable an email address link in a HTML email.
For example, if in an email I send some raw HTML like
Hi, you email is: <br/>
[email protected]
Gmail autodetects that this is an email address and changes it to
Hi, you email is: <br/>
<a target="_blank" href="mailto:[email protected]">[email protected]</a>
I would like to have this output
# Text without the 'mailto:' link
Hi, you email is:
[email protected]
How can I do that?
Upvotes: 21
Views: 44476
Reputation: 11
You can just break the email address in half with an invisible space.
test<span style="display: none;"> </span>
@email.com
The <span>
puts a space in the email, but the style prevents the space from displaying. As far as the browser is concerned, the text is "test @email.com", but it displays as "[email protected]" and will even allow the user to cut and paste the email without the space.
Upvotes: 1
Reputation: 41
This is what worked for me in Laravel.
<a style="pointer-events: none; color: inherit">
{{$user->email}}
</a>
Upvotes: 3
Reputation: 1518
By 2021, the best for me would be:
<a href='#' style='text-decoration: none; color:#000000' name='myname'>[email protected]</a>
Explanation
After trying different services like Gmail, Outlook 365, Mailinator, and MyTrashMail, the results are:
• <a>
- wrapping the email into anchor is essential, as raugfer pointed
• href='#'
is necessary for Outlook. Linking to a fake anchor disables following the link.
• text-decoration: none, color:#000000
removes underline and changes color from blue link color to natural text color. For those who want not only to disable the link but make its appearance as usual text.
• name='myname'
wouldn't harm, however, I haven't noticed its necessity.
Any javascript should be avoided, it won't pass Gmail. E.g. , onClick="return false;"
.<script>...</script>
If you want to change the cursor to default, cursor: default
or cursor: auto
won't help. For Gmail only, do without href='#'
Using <span>
or <myspan>
works for Gmail as Prince Mishra stated, but it doesn't help in all the services (in Outlook, for instance).
Upvotes: 12
Reputation: 4479
Late reply but i think I have found a way to get over this auto linking issue.
The easiest and fastest way is to add a zero width non joiner between each alphabets. Now that sounded hard so I developed a small script that made things easy for me. Run the code below, add email address (paste or type) and it adds the required code around the email address. Paste the result in your email.
$('#userInput').keyup(function() {
var s = $(this).val().trim();
var text = "";
for ( var i = 0; i < s.length; i++ )
{
text += s[i]+'‌' ;
}
$('p').text( text );
});
#userInput{max-width:400px;width:100%;padding:10px 5px;}
*{outline:none;}
p,#userInput{font-family: 'Roboto', sans-serif;}
p{word-break:break-all;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<input type="text" id="userInput" />
<p></p>
Upvotes: 1
Reputation: 61
Reading all answers, I tried this in a Joomla article and it worked:
<p><strong>This is the email address: </strong><a name="whatever">youremail@domain.com</a></p>
Result:
This is the email address: youremail@domain.com
Worked on Chrome and Firefox.
Upvotes: 0
Reputation: 311
Even I had the same problem. Gmail would detect and convert mail addresses and ip addresses to links. I used string.replace to enclose dots (.) and @ in blocks. And that works fine for me. sample python code looks like.
text = [email protected]
chars = ['.','@']
encloseIn = 'span'
for char in chars:
text = string.replace(text, char, '<'+encloseIn+'>'+char+'</'+encloseIn+'>')
Upvotes: 2
Reputation: 367
You just need to add the "zero width space" character, his code in HTML is:
​
This code adds a space in the string where you need.
For a respectable solution you need to complement this method with a <nobr>
tag, because with this tag you can prevent from breaking to the next line.
Upvotes: -1
Reputation: 1904
I have a more natural suggestion: wrap the email/url in an anchor hyperlink.
<a name="myname">[email protected]</a>
Since the text is already wrapped in a hyperlink, Gmail gives up and leave it alone. :)
(Note: also worked for Apple mail client.)
Upvotes: 37
Reputation: 34340
The only way to get around this is to convert the email address into an image and include that in the email. Of course this means the user might choose to not download the image, which would mean they won't get the email address either.
What it really comes down to is that you can't control what Gmail or any other email client does once it receives an email, so there isn't another way around this. It's Gmail's, or any other email client's, choice to do what they want with emails, and that includes hyper-linking email addresses.
If you are very adamant about not converting emails into hyperlinks you can try to do other things to conceal the fact that it's an email, like writing it out instead:
Hi, your email is:
test at email dot com
Of course this is probably more confusing. If I were you, I would simply settle for the fact that Gmail will hyper-link your emails.
Upvotes: -3