In Playframework 2.0, non sembra essere semplice inviare e-mail (vedere i commenti su Using sendmail as SMTP server in Play Framework) come ha fatto in Play 1.x. Non c'è funzionalità di mailing out of the box ... quindi, come posso inviare email?Invio di e-mail in Playframework 2.0
risposta
Playframework 2.x richiede un plug-in per Mail per funzionare. Non è stato aggiunto al core perché gli sviluppatori hanno ritenuto che fosse banale far funzionare l'email, quindi ha deciso che era meglio creare un plug-in. Tuttavia, la rapida raffica di messaggi su gruppi di google ha suggerito che si sbagliavano ... la gente si aspettava la stessa funzionalità di Play 1.x.
Come ci si aspetta dalla comunità, è stato rapidamente creato un plug-in. Vedi https://github.com/playframework/play-mailer.
Ci saranno altri plugin da tenere d'occhio, ma questo è il tipo supportato da uno sviluppatore principale, quindi mi aspetto che sia il migliore.
Ho subito un plug-in compromesso con il supporto per gli allegati, perché finora quello menzionato @Codemwnci non ce l'ha. You can check it out.
La risposta accettata è che Play necessita di un plug-in per inviare e-mail. Questo è falso. Puoi facilmente adattare qualsiasi mailing list JVM per la tua app Play. Ecco un esempio utilizzando Apache Commons Email, adattato per semplicità da here e il nostro codice di produzione.
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(...))
Dato che l'invio di e-mail è così banalmente compiuto in gioco, sono i plugin sorpreso sono consigliati a tutti. A seconda di un plug-in può farti male se vuoi aggiornare le versioni di Play, e non ritengo che ne valga la pena qualcosa che richiede 30 LoC per realizzarlo. Il nostro codice ha funzionato l'aggiornamento non modificato da Play 2.0 a 2.1 a 2.2.
- 1. Debug Playframework 2.0 in Eclipse
- 2. Memoria insufficiente in PlayFramework 2.0
- 3. Modulo Playframework e due pulsanti di invio
- 4. Invio trasmissioni Email
- 5. Invio di email tramite email.mime.multipart in Python
- 6. Invio di email HTML in django
- 7. Guida introduttiva a Playframework 2.0 e selenio
- 8. LDAP per autenticazione e autorizzazione in Playframework 2.0
- 9. come riutilizzare un parser anorm in playframework 2.0 con scala
- 10. GZIP il corpo della risposta in PlayFramework 2.0
- 11. Invio di email Devise tramite Resque
- 12. Invio di email html con script JQuery
- 13. Come impostare il lavoro di eclipse-ide su Playframework 2.0
- 14. playframework 2.0 - ha superato max_user_connections sulle evoluzioni del database?
- 15. Invio di testo formattato con UCMA 2.0
- 16. aspnet Identità 2.0 Email e UserName duplicazione
- 17. fare una richiesta GET ad un webservice dal playframework 2.0
- 18. Invio metodo di estensione protocollo in Swift 2.0
- 19. Playframework: [RuntimeException: java.lang.reflect.InvocationTargetException]
- 20. Invio email in GO, impossibile impostare l'intestazione Return-Path
- 21. Versione di Akka in Playframework
- 22. Invio di email da Django tramite SMTP ospitato
- 23. Invio di email tramite Mailgun con il pacchetto NodeMailer
- 24. Impostazioni SMTP di Cakephp 2.0 su Email non funzionanti
- 25. Invio di email HTML tramite PHP: incluso il file HTML
- 26. Invio di email da PHPMailer utilizzando i proxy Indirizzi IP
- 27. Invio di email Python TypeError: stringa o buffer previsto
- 28. usando scalatest in un progetto playframework
- 29. Utilizzo memoria di Playframework
- 30. Imposta il livello di registrazione per eseguire il debug nella produzione di Playframework 2.0?
Questa lista di plugin per 2.0 è stata utile - si noti che dovrebbe essere temporanea: https://github.com/playframework/Play20/wiki/Modules –
@Codemwnci: sto guardando questo modulo per supporto per gli allegati, ma sembra essere nascosto o inesistente. Suggerimenti? – Samo
Il percorso non è corretto in readme: prova '" com.typesafe "%" play-plugins-mailer_2.9.1 "%" 2.0.4 "'. avviso '_2.9.1'. – Trick