2011-11-02 22 views
9

Ho il pulsante mailto in tutte le pagine del mio sito e voglio scrivere un riferimento a quella pagina nel corpo dell'e-mail.Come scrivere nel collegamento del corpo 'mailto' alla pagina corrente

In una pagina posso avere

<a class="email" title="Email a friend" href="mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0ahttp://www.a.com/Home/SiteMap/tabid/589/Default.aspx">Email</a> 

Ma come posso fare questo generico per tutte le pagine?

+0

Javascript potrebbe farlo per voi. Utilizzando "document.location.href". Oppure, se stai usando .php puoi farlo ancora più facilmente. Puoi usare php? fammi sapere e posso fare un esempio per te! –

+0

No, io uso Asp;) Ma come posso scrivere javascript in quella parte? (Body = "...") –

risposta

31

Questa è la soluzione javascript pura:

<a class="email" title="Email a friend" href="#" onclick="javascript:window.location='mailto:?subject=Interesting information&body=I thought you might find this information interesting: ' + window.location;">Email</a> 
+0

Questo * potrebbe * causare la pagina per cambiare. return false per impedire che. ... + window.location; return false; "> ... –

+1

@TravisSwientek si può spiegare il motivo per cui dovrebbe succedere? –

+0

Apre il client di posta elettronica nella finestra corrente. Qualunque modo posso renderlo aperto in una nuova scheda? Grazie. – NJT

3

È possibile inserire un JS in ogni pagina in cui è possibile modificare tutti gli hrefs di tutti i collegamenti di posta elettronica al caricamento del documento.

userò jQuery per il codice di esempio, perché è più compatto, ma questo può essere realizzato anche con JS puri:

$(document).ready(function(){ 
    $(".email").attr("href", "mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0a"+window.location); 
}); 
+1

naturalmente può essere raggiunto javascript puro :), ciò che è jquery – david

+2

@ Davide:" jQuery è una libreria veloce e concisa JavaScript che semplifica traslazione documento HTML, la gestione degli eventi, l'animazione e le interazioni Ajax per lo sviluppo web rapido. jQuery è progettato per cambiare il modo in cui si scrive JavaScript " –

+0

grazie nick, mi era solo per avere una frecciata a voi:.}' Cosa è JavaScript jquery' – david

1

voi è necessario utilizzare &body= per includere una stringa nel corpo dell'email

qui è una funzione javascript generica

<script> 
    function emailFriend(){ 

    var strrep ,ptitle = document.title; 

strrep= ptitle.replace(/"/g,'%22'); 
strrep= ptitle.replace(/&/g,'%26'); 

var mailtourl = "mailto:?subject=Interesting%20information&body=I thought you might find this information interesting: "+encodeURIComponent(location.href); 
location.href = mailtourl; 
return false 
} 

</script> 


<a href="javascript:;" onclick="emailFriend();return false">Email</a> 
8

Con Javascript, utf-8-percento-codifica l'oggetto e gli hfvalues ​​del corpo utilizzando encodeURIComponent() su una pagina UTF-8.

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
     <script> 
      function SendLinkByMail(href) { 
       var subject= "Interesting Information"; 
       var body = "I thought you might find this information interesting:\r\n\r\n<"; 
       body += window.location.href; 
       body += ">"; 
       var uri = "mailto:?subject="; 
       uri += encodeURIComponent(subject); 
       uri += "&body="; 
       uri += encodeURIComponent(body); 
       window.open(uri); 
      } 
     </script> 
    </head> 
    <body> 
     <p><a href="javascript:(function()%7BSendLinkByMail()%3B%7D)()%3B">Email link to this page</a></p> 
    </body> 
</html> 

Se stai facendo questo server-side, si può semplicemente costruire il link mailto ed emettono come il valore dell'attributo href. Quindi, non avrai affatto bisogno di JS.

Suppongo che ASP abbia alcune funzioni di codifica URI che funzionano come encodeURIComponent().

È anche possibile visualizzare la fonte della mia pagina mailto URI composer come altro esempio.

Si può anche dare un'occhiata a http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail e il mio mailto URI syntax validator.

Per il <e> in cui incorporo l'URI, nel codice JS sopra, vedere "Appendice C. Delimitare un URI nel contesto" di RFC3986 per il motivo.

Inoltre, invece di window.location.href, è possibile utilizzare window.location o document.location.href o document.location. Di solito uso "document.location".

Per il motivo per cui si utilizza un URI JavaScript anziché un attributo onclick, vedere this answer.

Si noti inoltre che nell'URI JS nel codice sopra, ho avvolto il codice in una funzione anonima. Non è necessario in questo caso perché la funzione non restituisce nulla che cambierebbe il documento quando si fa clic. Ma è solo fare tutto il tempo per buona misura.

Vedere il mio Javascript URI compose per aiutare con la creazione di URI javascript.

+1

bello mailto convalida Shadow2531 – david

+0

Esiste un modo per evitare che ciò aprendo una nuova scheda/finestra vuota? – Jason

+1

@ Jason Si potrebbe cambiare window.open (URI) per window.location.href = uri – Shadow2531

Problemi correlati