En Playframework 2.0, no parece ser tan simple enviar correos electrónicos (ver comentarios en Using sendmail as SMTP server in Play Framework) como lo hizo en Play 1.x. No hay una funcionalidad de envío de correo fuera de la caja ... entonces, ¿cómo envío correos electrónicos?Envío de correos electrónicos en Playframework 2.0
Respuesta
Playframework 2.x requiere un complemento para que Mail funcione. No se agregó al núcleo porque los desarrolladores consideraron que era trivial hacer funcionar el correo electrónico, por lo que decidieron que era mejor crear un complemento. Sin embargo, la rápida ráfaga de mensajes en los grupos de google sugirió que se equivocaron ... las personas esperaban la misma funcionalidad que Play 1.x.
Sin embargo, como esperaba de la comunidad, se creó rápidamente un complemento. Ver https://github.com/playframework/play-mailer.
Habrá más complementos que tener en cuenta también, pero este es el compatible con dispositivos seguros por un desarrollador principal, por lo que espero que sea el mejor mantenido.
Rápidamente hackeé el complemento con soporte para archivos adjuntos, porque hasta ahora el mencionado @Codemwnci no lo tiene. You can check it out.
La respuesta aceptada es que Play necesita un complemento para enviar correos electrónicos. Esto es falso Puede adaptar fácilmente cualquier biblioteca de correo JVM para su aplicación Play. Aquí hay un ejemplo usando Apache Commons Email, adaptado para simplificar desde here y nuestro propio código de producción.
import org.apache.commons.mail._
import scala.util.Try
private val emailHost = Play.configuration.getString("email.host").get
/**
* Sends an email
* @return Whether sending the email was a success
*/
def sendMail(from: (String, String), // (email -> name)
to: Seq[String],
cc: Seq[String] = Seq.empty,
bcc: Seq[String] = Seq.empty,
subject: String,
message: String,
richMessage: Option[String] = None,
attachment: Option[java.io.File] = None) = {
val commonsMail: Email = if(mail.attachment.isDefined) {
val attachment = new EmailAttachment()
attachment.setPath(mail.attachment.get.getAbsolutePath)
attachment.setDisposition(EmailAttachment.ATTACHMENT)
attachment.setName("screenshot.png")
new MultiPartEmail().attach(attachment).setMsg(mail.message)
} else if(mail.richMessage.isDefined) {
new HtmlEmail().setHtmlMsg(mail.richMessage.get).setTextMsg(mail.message)
} else {
new SimpleEmail().setMsg(mail.message)
}
}
commonsMail.setHostName(emailHost)
to.foreach(commonsMail.addTo(_))
cc.foreach(commonsMail.addCc(_))
bcc.foreach(commonsMail.addBcc(_))
val preparedMail = commonsMail.
setFrom(mail.from._2, mail.from._1).
setSubject(mail.subject)
// Send the email and check for exceptions
Try(preparedMail.send).isSuccess
}
def sendMailAsync(...) = Future(sendMail(...))
Teniendo en cuenta que el envío de correo electrónico se realiza tan trivialmente en Play, me sorprenden los complementos que se recomiendan en absoluto. Dependiendo de un complemento, puede perjudicarte si quieres actualizar las versiones de Play, y no creo que valga la pena llevar a cabo algo así como 30 LoC. Nuestro código ha trabajado en la actualización no modificada de Play 2.0 a 2.1 a 2.2.
- 1. Envío de "en nombre de" correos electrónicos
- 2. envío de correos electrónicos en aplicaciones web
- 3. Envío de correos electrónicos de mhtml - C#
- 4. Envío de correos electrónicos con WAMP
- 5. Probar el envío de correos electrónicos
- 6. Envío de correos electrónicos en hilos separados usando QueueUserWorkItem
- 7. Retrasando el envío de correos electrónicos en C#
- 8. Envío de correos electrónicos en JAVA EE 6
- 9. Envío de correos electrónicos con archivos adjuntos programáticamente en ASP.NET
- 10. Opinión sobre el envío de correos electrónicos de php
- 11. Envío de correos electrónicos a través de SMTP con PHPMailer
- 12. rieles Mailer: envío de correos electrónicos a un archivo local
- 13. ¿Cómo envío correos electrónicos desde la línea de comandos?
- 14. Incrustar imágenes en correos electrónicos
- 15. ¿Cómo envío correos electrónicos firmados desde la aplicación C#?
- 16. Debug Playframework 2.0 en Eclipse
- 17. Enviar correos electrónicos asíncronos
- 18. PHP enlaces/correos electrónicos
- 19. Espaciado en correos electrónicos HTML
- 20. Recibir correos electrónicos en Heroku
- 21. Detectar correos electrónicos de respuesta automática programáticamente
- 22. Rails3 y Heroku: ¿Enviar correos electrónicos?
- 23. Procesamiento de correos electrónicos entrantes en Heroku
- 24. IIS 7.5 ¿recibe correos electrónicos?
- 25. Enviando correos electrónicos usando C
- 26. Cómo configurar eclipse-ide en playframework 2.0
- 27. El control de la tala y el envío de correos electrónicos en diferentes entornos
- 28. ¿Qué debería saber sobre el envío de correos electrónicos en un hilo de fondo? ASP.NET
- 29. Contando correos electrónicos en Outlook por fecha
- 30. Recibir y enviar correos electrónicos en python
Esta lista de complementos para 2.0 ha sido útil, tenga en cuenta que se supone que es temporal: https://github.com/playframework/Play20/wiki/Modules –
@Codemwnci: Estoy mirando a través de este módulo para soporte de archivos adjuntos pero parece estar oculto o inexistente. ¿Consejos? – Samo
La ruta está mal en el archivo léame - prueba '" com.typesafe "%" play-plugins-mailer_2.9.1 "%" 2.0.4 "'. aviso '_2.9.1'. – Trick