web-dev-qa-db-fra.com

Empêcher Gmail de créer des liens pour les URL et les adresses électroniques

Le problème est que gmail crée automatiquement un lien hypertexte pour toutes les URL de site Web et adresse électronique. Je ne veux pas créer de lien. ma 

SmtpClient MailClient = new SmtpClient();
MailMessage NetMail = new MailMessage();
msg ="I do not want www.google.com as a link at recipient end. <br/>";
msg += "I want my email addrress [email protected] as html without a link";
NetworkCredential cr = new NetworkCredential("########", "###########");
NetMail.From = new MailAddress("########@m####.###", "######");
NetMail.To.Add(new MailAddress("[email protected]"));
NetMail.Subject = "Test Mail";
NetMail.IsBodyHtml = true;
NetMail.Body = msg;
MailClient.Host = "xyz.com";
MailClient.Port = 25;
MailClient.EnableSsl = false;
MailClient.Credentials = cr;
MailClient.Send(NetMail);

Toute solution?

32
Manjoor

Il n'y a aucun moyen d'arrêter de créer des URL, car il est automatiquement vérifié par le fournisseur de messagerie que le texte est une URL valide.

La seule façon de surmonter cela est de tromper l'analyseur. il suffit de mettre des espaces, des balises HTML, de manière que l’analyseur ne puisse pas identifier comme (Banging SO :)): 
http://foolishedsiteparser.com 
_http: //www.parsersmashed.com 
[email protected] 
et de nombreuses autres façons ...;)

[Compilé à partir de: -

 http:<span>//foolishedsiteparser.com</span> <br/>
 _http://www.parsersmashed.com <br/>
noonesemail<x>@</x>linkdead.com <br/>

]

22
perilbrain

J'ai pu contourner ce problème simplement en ajoutant <a style="color: #000000">link text</a> (notez qu'il n'y a pas de href). 

Je n'ai pas essayé d'utiliser des attributs en plus de style mais j'imagine que vous pourriez le faire. Le système de messagerie que j'utilise (Blackbaud NetCommunity) supprimera une balise <a> simple. Il me fallait donc au moins un attribut. 

28
Loko Web Design

J'ai eu le même problème et j'ai découvert si vous utilisiez un courrier électronique comme celui-ci;

<a rel="nofollow" style='text-decoration:none; color:#333'>[email protected]</a>

les fournisseurs de courrier électronique n'ont pas tendance à suivre le courrier électronique sous forme de lien.

J'espère que cela t'aides.

21
Teoman shipahi

En prenant exemple sur la réponse de périlbrain , j’ai implémenté la regex suivante que j’utilise pour cela:

var unlink = function (val) {
  return val.replace(/([@\.:])/g, '<span>$1</span>');
};

Notez que cette fonction remplace globalement tout ce qui est transmis - elle serait probablement trop agressive pour les blocs de texte naturel comme dans l'exemple du PO, mais les modèles sont souvent paramétrés et cela fonctionne très bien lorsque vous pouvez simplement lui transmettre une URL ou un courrier électronique ( En fait, je l’ai implémentée comme une fonction d’aide de gabarit pour qu’il fasse exactement cela).

La fonction convertit les entrées suivantes:

[email protected]
http://johndoe.com

dans ceci:

john<span>.</span>doe<span>@</span>gmail<span>.</span>com
http<span>:</span>//johndoe<span>.</span>com

Notez que j'ai essayé une fausse balise courte telle que <x>, comme indiqué dans la réponse acceptée, et que GMail l'a "intelligemment" remplacée par des balises <u>, ce qui, je suppose, est une fonctionnalité, mais n'était pas souhaitable. Lors de mes tests, les balises <span> empêchent les liens sans effets secondaires visuels.

7
Brian Moeskau

J'y suis arrivé!

Cela n'empêche pas les e-mails d'être transformés en liens, mais vous permet de définir la couleur de la police et de supprimer le soulignement de ce lien.

Cela fonctionne dans tous les clients de messagerie que j'ai testés sur litmus.com, y compris Outlook 2010, 2013, 2016 (également sous Windows), Outlook.com, iPhone 6s, iPad, interface Web gmail et Apple Mail 8, 9.

Variation 1: Un lien qui ne réagit pas lorsqu'on clique dessus

<a href="#" style="text-decoration:none; color:#000">[email protected]</a>

Variante 2: Un mailto-link. Travaille dans presque tous les clients. Outlook.com a toutefois le style bleu et souligné.

<a href="mailto:[email protected]" style="text-decoration:none; color:#000">[email protected]</a>
6
rosell.dk

J'ai une solution non mentionnée pour les courriels textuels: utilisez des caractères Unicode similaires. Par exemple, un point leader (U + 2024) au lieu d'un point. Comparez, à quoi ressemble Běhej.com et Běhej․com (le premier est avec un point normal).

4
Petr Dlouhý

Pour l'instant, le wrapping simple par <span> ne fonctionne pas, je suggère de remplacer @ par son alternative html-entity

function disable_email_link($email) {
  //encoder https://mothereff.in/html-entities
  $email = str_replace('@', '&#x40;', $email);
  $email = str_replace('.', '<span>.</span>', $email);
  return $email;
}

De plus, si votre email contient des numéros de téléphone, vous pouvez y échapper avec la fonction disable_tel_link:

function wrap_span_letters($string) {
  $res = "";
  $length = strlen($string);
  for ($i = 0; $i < $length; $i++) {
    $res .= "<span>$string[$i]</span>";
  }
  return $res;
}

function disable_tel_link($phone) {
  return wrap_span_letters($phone);
}
1
Lukas Pierce

Aucune des solutions énumérées ici ne semble plus fonctionner. J'ai un peu expérimenté l'idée de caractères Unicode non imprimables et j'ai constaté que cette séquence fonctionnait bien:

<span>foo&zwnj;.&zwnj;bar&zwnj;.&zwnj;com</span>

Où est le caractère ZERO WIDTH NON-JOINER.

0
Tomek

Supposons que votre URL à afficher soit "abcdUrl.com" Pour éviter que gmail ne s'affiche en tant que lien, enveloppez-le dans une balise d'ancrage.

<a href="" style="text-decoration:none;color:#333;"> abcdUrl.com </a>

Cela fonctionne bien dans Gmail.

0
Tapas Kumar

J'avais un point com dans le titre de mon message de confirmation . Inspiré par @perilbrain, j'ai tourné mon problème comme ceci

domain.com => domain<span>.</span>

php 

$titre = str_replace(".", "<span>.</span>", $titre);

simple!

0
Andre

j'ai eu le même problème, donc après quelques minutes, j'ai trouvé comment résoudre ce problème.

le fait est que si vous ciblez directement l'élément, cela ne fonctionnera pas, car Gmail y ajoutera automatiquement un tag "a". Vous devez donc aller un pas plus loin et déclarer une classe pour ce tag "a". Dans mon cas, l’email était dans un "" tag, ce qui m’a permis de travailler plus facilement. donc ce que j'ai fait était de créer une classe comme celle-ci:

.email_contact a {color:#ffffff!important; text-decoration: none!important;}

il n'y a pas de balise "a" dans mon code, mais comme Gmail l'ajoute automatiquement, vous devriez la récupérer. Maintenant, il ne vous reste plus qu'à utiliser cette classe, où que vous ajoutiez votre adresse e-mail telle que "span" ou "div" et boum! fixé.

0
Shahin Shateri

Même si c'est un vieux fil, je veux aider les gens qui pourraient arriver ici. J'ai trouvé que l'ajout d'une extension dans le lien empêche Google de le voir comme un lien, voir ci-dessous:

<a href="https://www.link.dk" style="text-decoration: none   !important; color: #878787 !important;">www.<span></span>link.dk</a>
0
Anoxy