2012-08-16 15 views
23

Problema es que gmail crea automáticamente un hipervínculo para todas las direcciones URL y direcciones de correo electrónico del sitio web. No quiero crear un enlace MiImpedir que Gmail cree enlaces para URL y direcciones de correo electrónico

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); 

¿Alguna solución?

Respuesta

19

No hay forma de dejar de crear URL, ya que el proveedor de correo electrónico comprueba automáticamente si el texto es una URL válida.

La única manera de superar esto es engañar al analizador sintáctico. sólo hay que poner espacios, etiquetas HTML, lo que sea de una manera tal que no puede identificar los mismos analizador (Golpeando SO :)): -
http://foolishedsiteparser.com
_http: //www.parsersmashed.com
noonesemail @ linkdead .com
y muchas otras maneras ...;)

[Compilado a partir de: -

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

]

+0

No funciona. Gmail reemplazó la etiqueta con automáticamente @perilbrain –

11

que tenían un mismo tema y encontraron a cabo si se utiliza correo electrónico como este;

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

proveedores de correo no tiende a seguir el correo electrónico como un enlace.

Espero que esto ayude.

+0

Esta es una buena solución, funciona en Gmail, Outlook y otros. Sin embargo, no funciona con Apple Mail.app. – psimekjr

+0

@Psimekjr Me encontré con el mismo problema con el correo de Apple. DEBE incluir un atributo href (incluso si su valor es #) – user1380540

18

Pude solucionar este problema simplemente agregando <a style="color: #000000">link text</a> (observe que no hay href).

No he intentado utilizar atributos además de style, pero me imagino que podría. El sistema de correo electrónico que uso (Blackbaud NetCommunity) eliminará una etiqueta simple <a>, así que tuve que tener al menos un atributo.

+1

Puedo confirmar que este truco funciona en GMail. –

+0

Necesita el href para que el correo de Apple aplique el estilo – user1380540

+0

Esta es la respuesta más elegante. – Maleka

6

Siguiendo el ejemplo de perilbrain's answer, que implementaron las siguientes expresiones regulares que utilizo para esto:

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

Tenga en cuenta que esta función sustituye a nivel mundial en lo que se pasa en - probablemente sería demasiado agresivo para los bloques de texto natural como en el ejemplo del PO, pero a menudo las plantillas se parametrizan y esto funciona muy bien cuando se puede pasar una url o correo electrónico (de hecho lo implementé como una función auxiliar de plantilla para que haga exactamente eso).

La función convierte las siguientes entradas:

[email protected] 
http://johndoe.com 

en esto:

en cuenta que he intentado una etiqueta corta falsa como <x> como se muestra en la respuesta aceptada y se encontró que GMail "inteligente "lo reemplazó con <u> etiquetas, que supongo que es una característica, pero no era deseable. En mi prueba, las etiquetas <span> evitan la vinculación sin efectos secundarios visuales.

+0

trabajando de manera muy efectiva :-) @bmoeskau –

+0

funciona bien pero el correo está entrando en spam ahora @bmoeskau –

+0

El filtrado de spam es un tema grande y complejo, y se puede desencadenar en varios niveles desde el cliente al servidor de correo al ISP. Hay muchos factores que influyen en si los correos electrónicos se marcan como spam y si varios filtros de spam funcionan de manera diferente. Dudo que * este cambio solo * haría que la mayoría de los filtros de spam rechazaran un correo electrónico normal, pero por supuesto YMMV. –

0

Aunque este es un hilo viejo, quiero ayudar a las personas que puedan llegar aquí.Encontré que agregar un lapso dentro del enlace hace que Google no lo vea como un enlace ver a continuación:

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

Nailed it!

Esto no evita que los correos electrónicos se conviertan en enlaces, pero le permite establecer el color de la fuente y eliminar el subrayado de ese enlace.

Funciona en todos los clientes de correo electrónico que probé en litmus.com, incluidos Outlook 2010, 2013, 2016 (también en Windows), Outlook.com, iPhone 6s, iPad, interfaz web de gmail y Apple Mail 8, 9

Variación 1: Un enlace que no reacciona cuando se hace clic sobre

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

Variación 2: A mailto-link. Funciona en casi todos los clientes. Sin embargo, Outlook.com lo califica de azul y con subrayado.

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

Tengo una solución no mencionada para correos electrónicos de texto: use caracteres Unicode similares. Por ejemplo, un líder de punto (U + 2024) en lugar de punto. Compare, cómo se ve Běhej.com y Běhej.com (el primero es con punto regular).

0

Por ahora sencilla envoltura por <span> no está funcionando, sugiero reemplazar @ por su alternativa html entidad

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

Además, si su correo electrónico contiene los números telefónicos a los que puede escapar de ella por disable_tel_link función:

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); 
} 
Cuestiones relacionadas