¡La versión 2.0 de Play ya está lista! Ayúdanos a traducir la documentación de la útlima versión y sigue nuestro progreso.

Manuales, tutoriales & referencias

Consulte

Contenidos

Elija la versión

Buscar

Busque con google

Libros

Envio de correos electrónicos

La funcionalidad de envío de emails internamente utiliza la biblioteca Apache Commons Email. Puede usar la clase de utilidad play.libs.Mail para enviar emails muy fácilmente.

Un email sencillo

SimpleEmail email = new SimpleEmail();
email.setFrom("sender@zenexity.fr");
email.addTo("recipient@zenexity.fr");
email.setSubject("subject");
email.setMsg("Message");
Mail.send(email); 

Un email con contenido HTML:

HtmlEmail email = new HtmlEmail();
email.addTo("info@lunatech.com");
email.setFrom(sender@lunatech.com", "Nicolas");
email.setSubject("Prueba de email con una imagen");
// incrustar la imagen y obtener su contenido
URL url = new URL("http://www.zenexity.fr/wp-content/themes/images/logo.png");
String cid = email.embed(url, "Zenexity logo");
// configurar el mensaje html
email.setHtmlMsg("<html>Zenexity logo - <img src=\"cid:"+cid+"\"></html>");
// configurar el mensaje alternativo
email.setTextMsg("Qué lástima, su cliente de email no soporta HTML :(");

Para más información vea la Documentación de Commons Email.

Integración de Mail y MVC

También puede enviar mensajes complejos y dinámicos usando la sintaxis estándar de plantillas.

Primero, defina un Mailer notifier (Notificador de correo) en su aplicación. Su notificador tiene que extender play.mvc.Mailer y debe formar parte del paquete notifiers.

Cada uno de los métodos public static enviarán un email, de forma análoga a las acciones para un controlador MVC. Por ejemplo

package notifiers;
 
import play.*;
import play.mvc.*;
import java.util.*;
 
public class Mails extends Mailer {
 
   public static void welcome(User user) {
      setSubject("Bienvenido %s", user.name);
      addRecipient(user.email);
      setFrom("Me <me@me.com>");
      EmailAttachment attachment = new EmailAttachment();
      attachment.setDescription("Un documento pdf");
      attachment.setPath(Play.getFile("rules.pdf").getPath());
      addAttachment(attachment);
      send(user);
   }
 
   public static void lostPassword(User user) {
      String newpassword = user.password;
      setFrom("Robot <robot@thecompany.com>");
      setSubject("Su clave ha sido reinicializada");
      addRecipient(user.email);
      send(user, newpassword);
   }
 
}

Emails con contenido text/html

La llamada al método send utilizará la plantilla app/views/Mails/welcome.html como cuerpo del mensaje.

<html><body><p>Welcome <b>${user.name}</b>, </p>
...
</html>

La plantilla para el método lostPassword podría ser como ésta:

app/views/Mails/lostPassword.html

<html>
<body><head>...</head><body>
<img src="mycompany.com/images"/>
<p>
    Hola ${user.name}, su nueva clave es <b>${newpassword}</b>.
</p>
</body>
</html>

Emails con contenido text/plain

Si no define una plantilla HTML, se enviará un mensaje en texto plano usando la plantilla de texto.

La llamada al método send utilizará la plantilla app/views/Mails/welcome.txt como cuerpo del mensaje.

Welcome ${user.name},
...

La plantilla para el método lostPassword podría ser como esta:

app/views/Mails/lostPassword.txt

Hola ${user.name},
 
Su nueva clave es ${newpassword}.

Emails con contenido text/html con text/plain como mensaje alternativo

Si se define una plantilla HTML y existe una plantilla de texto, entonces se usará la plantilla de texto como mensaje alternativo. En nuestro ejemplo anterior, si existen tanto app/views/Mails/lostPassword.html como app/views/Mails/lostPassword.txt, entonces el mensaje se enviará en text/html como se define en lostPassword.html con una parte alternativa como está definido en lostPassword.txt. Puedes enviar bonitos emails HTML a tus amigos y a la vez complacer a tus amigos geeks que siguen usando mutt ;)

Enlaces a la aplicación en el email

Puede incluir links a la aplicación en el cuerpo del email de esta forma:

@@{application.index}

Si envías mails desde Jobs tienes que poner en application.baseUrl una URL base externa válida para tu aplicación.

Por ejemplo, para enviar un mail desde un Job que se está ejecutando en el sitio web playframework.org, la configuración tendría que ser como esta:

application.baseUrl=http://www.playframework.org/

Configuración SMTP

La funcionalidad de envío de emails se configura mediante varias propiedades de la configuración de mail:

Dos propiedades de configuración adicionales permiten redefinir el comportamiento por defecto.

Por defecto, en el modo DEV, el email se mostrará en la consola, mientras que en modo PROD se enviará al servidor SMTP real. Puede cambiarse el comportamiento por defecto comentando esta línea:

# Por defecto se usa un Mailer simulado
mail.smtp=mock

Uso de Gmail

Para usar los servidores de Gmail, por ejemplo, cuando despliegas con playapps, utilice esta configuración:

mail.smtp.host=smtp.gmail.com
mail.smtp.user=tuLoginEnGmail
mail.smtp.pass=tuClaveEnGmail
mail.smtp.channel=ssl

Próximos pasos

Ahora, ya podemos Probar la aplicación.