2012-08-16 9 views
23

Il problema è che gmail crea automaticamente un collegamento ipertestuale per l'URL di tutti i siti Web e l'indirizzo e-mail. Non voglio creare un collegamento. MyImpedire a Gmail di creare collegamenti per URL e indirizzi e-mail

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

Qualsiasi soluzione?

risposta

19

Non c'è modo di smettere di creare URL, perché è controllato automaticamente dal provider di posta elettronica che il testo è un URL valido.

Unico modo per superare questo è, ingannando il parser. basta mettere gli spazi, i tag HTML, tutto ciò in modo tale che parser sopraelevazione identificano come (Sbattere SO :)): -
http://foolishedsiteparser.com
_http: //www.parsersmashed.com
noonesemail @ linkdead .com
e molti altri modi ...;)

[Compilato da: -

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

]

+0

Non funziona. Gmail ha sostituito il tag con automaticamente @perilbrain –

11

ho avuto un stesso problema e scoperto se si utilizza e-mail come questo;

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

provider di posta elettronica non tende a seguire l'email come collegamento.

Spero che questo aiuti.

+0

Questa è una soluzione piacevole, funziona in Gmail, Outlook e altri. Non funziona però con Apple Mail.app. – psimekjr

+0

@Psimekjr Ero in esecuzione lo stesso problema con la posta Apple. DEVI includere un attributo href (anche se il suo valore è #) – user1380540

18

Sono stato in grado di aggirare questo problema solo aggiungendo <a style="color: #000000">link text</a> (avviso non c'è href).

Non ho provato ad utilizzare attributi oltre a style ma immagino che potreste. Il sistema di posta elettronica che uso (Blackbaud NetCommunity) rimuoverà un semplice tag <a>, quindi dovevo avere almeno un attributo.

+1

Posso confermare che questo trucco funziona in GMail. –

+0

È necessario href per la posta Apple per applicare lo stile – user1380540

+0

Questa è la risposta più elegante. – Maleka

6

Prendendo spunto da perilbrain's answer, ho implementato il seguente espressione regolare che uso per questo:

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

Si noti che questa funzione sostituisce globalmente su tutto ciò che è passato in - sarebbe probabilmente troppo aggressivo per i blocchi di testo naturale come nell'esempio dell'OP, ma spesso i modelli sono parametrizzati e questo funziona benissimo quando puoi semplicemente passargli un url o una email (l'ho effettivamente implementato come una funzione di template helper in modo che faccia esattamente questo).

La funzione converte i seguenti ingressi:

[email protected] 
http://johndoe.com 

in questo:

Nota che ho provato un falso tag breve come <x> come indicato nella risposta accettata e ha scoperto che GMail "in modo intelligente "lo ha sostituito con i tag , che presumo sia una funzionalità, ma non era auspicabile. Nei miei test, i tag <span> impediscono il collegamento senza effetti collaterali visivi.

+0

funziona in modo molto efficace :-) @bmoeskau –

+0

funziona bene ma la posta sta andando in spam ora @bmoeskau –

+0

Il filtro antispam è un argomento ampio e complesso e può essere attivato a vari livelli dal client al server di posta all'ISP. Ci sono molti fattori che influenzano il fatto che le e-mail vengano contrassegnate come spam, e vari filtri anti-spam funzionano in modo diverso. Sono dubbioso che * questo cambiamento da solo * causerebbe la maggior parte dei filtri antispam a rifiutare un'e-mail altrimenti normale, ma ovviamente YMMV. –

0

Anche se questo è un thread precedente, voglio aiutare le persone che potrebbero arrivare qui.Ho trovato che l'aggiunta di un arco all'interno del link rende Google non lo vedo come un link vedi sotto:

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

inchiodato!

Ciò non impedisce che le e-mail vengano trasformate in collegamenti, ma consente di impostare il colore del carattere e rimuovere la sottolineatura di tale collegamento.

Funziona su tutti i client di posta elettronica che ho provato su litmus.com - inclusi Outlook 2010, 2013, 2016 (anche su Windows), Outlook.com, iPhone 6s, iPad, interfaccia web Gmail e Apple Mail 8, 9

Variante 1: Un collegamento che non reagisce quando si fa clic su di

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

Variante 2: A mailto-link. Funziona in quasi tutti i client. Outlook.com tuttavia lo rende blu e con una sottolineatura.

1

Ho una soluzione non menzionata per e-mail testuali: utilizzare caratteri unicode simili. Ad esempio un punto di riferimento (U + 2024) anziché il punto. Confronta, come appare Běhej.com e Běhej.com (il primo è con punto normale).

0

Per ora semplice involucro per <span> non funziona, ti suggerisco di sostituire @ dalla sua alternativa html-entità

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

Anche se la tua email contiene i numeri di telefono si può sfuggire da disable_tel_link funzione:

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); 
} 
Problemi correlati