2011-11-02 12 views
9

Tengo el botón mailto en todas las páginas de mi sitio y quiero escribir una referencia a esa página en el cuerpo del correo electrónico.Cómo escribir en el enlace del cuerpo 'mailto' a la página actual

En una página que puede tener

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

Pero, ¿cómo puedo hacer que esta genérico para todas las páginas?

+0

Javascript podría hacer esto para usted. Mediante el uso de "document.location.href". O bien, si está utilizando .php puede hacerlo aún más fácil. ¿Puedes usar php? ¡házmelo saber y puedo hacer un ejemplo para ti! –

+0

No, uso Asp;) Pero, ¿cómo puedo escribir javascript en esa parte? (Body = "...") –

Respuesta

31

Ésta es la solución javascript puro:

<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

Esto * podría * hacer que la página cambie. Devolver falso para evitar eso. ... + window.location; return false; "> ... –

+1

@TravisSwientek ¿Puede explicar por qué sucedería eso? –

+0

Esto abre el cliente de correo electrónico en la ventana actual. ¿De alguna manera puedo abrirlo en una nueva pestaña? Gracias. – NJT

3

Puede poner un JS en cada página que puede modificar todos los hrefs de todos los enlaces de correo electrónico cuando se carga el documento.

Voy a usar jQuery para el código de ejemplo, porque es más compacto, pero esto se puede lograr también con JS puros:

$(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

por supuesto, se puede lograr javascript :) puro, ¿qué es jquery? – david

+2

@david:" jQuery es una biblioteca de JavaScript rápida y concisa que simplifica el cruce de documentos HTML, manejo de eventos, animación e interacciones Ajax para un rápido desarrollo web. jQuery está diseñado para cambiar la forma en que escribes JavaScript. " –

+0

Gracias nick, solo estaba cavando en ti:}' ¿Qué es jquery' javascript – david

1

se necesita usar &body= para incluir una cadena en el cuerpo del correo electrónico

aquí hay una función genérica de Javascript

<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, usted utf-8-percent-encode el sujeto y el cuerpo hfvalues ​​usando encodeURIComponent() en una página 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> 

Si usted está haciendo esto del lado del servidor, sólo se puede construir el enlace de correo y emitirlo como el valor del atributo href. Entonces, no necesitarás JS en absoluto.

Supongo que ASP tiene algunas funciones de codificación URI que funcionan como encodeURIComponent().

También puede ver la fuente de mi página mailto URI composer como otro ejemplo.

Usted también echa un vistazo a http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail y mi mailto URI syntax validator.

Para el <y> que encierro el URI, en el código JS anterior, consulte el "Apéndice C. Delimitación de un URI en contexto" de RFC3986 para saber por qué.

Además, en lugar de window.location.href, puede usar window.location o document.location.href o document.location. Normalmente uso "document.location".

Por qué utiliza un URI de JavaScript en lugar de un atributo onclick, consulte this answer.

También tenga en cuenta que en el URI de JS en el código anterior, envolví el código en una función anónima. Eso no es necesario en este caso porque la función no devuelve nada que pueda cambiar el documento al hacer clic. Pero, es solo hacerlo todo el tiempo por si acaso.

Vea mi Javascript URI compose para ayudarlo a crear los URI de JavaScript.

+1

nice mailto validation Shadow2531 – david

+0

¿Hay alguna forma de evitar que esto abra una nueva pestaña/ventana en blanco? – Jason

+1

@Jason Puede cambiar window.open (uri) a window.location.href = uri – Shadow2531

Cuestiones relacionadas