Trong Playframework 2.0, có vẻ như không gửi email đơn giản (xem nhận xét trên Using sendmail as SMTP server in Play Framework) giống như trong Play 1.x. Không có chức năng hộp thư nào ... vì vậy, làm cách nào để gửi email?Gửi email trong Playframework 2.0
Trả lời
Playframework 2.x yêu cầu plugin để Mail hoạt động. Nó không được thêm vào lõi bởi vì các nhà phát triển cảm thấy nó là tầm thường để có được Email làm việc, vì vậy quyết định nó là tốt hơn để tạo ra một plugin. Tuy nhiên, sự nhanh chóng của các tin nhắn trên các nhóm google cho thấy họ đã sai nó ... mọi người mong đợi các chức năng tương tự như chơi 1.x.
Như bạn mong đợi từ cộng đồng, plugin được xây dựng nhanh chóng. Xem https://github.com/playframework/play-mailer.
Sẽ có nhiều plugin để tìm kiếm, nhưng đây là trình cắm được hỗ trợ an toàn bởi một nhà phát triển cốt lõi, vì vậy tôi hy vọng nó sẽ được duy trì tốt nhất.
Tôi đã nhanh chóng tấn công plugin với hỗ trợ cho tệp đính kèm, bởi vì cho đến nay đề cập đến @Codemwnci không có. You can check it out.
Câu trả lời được chấp nhận là Play cần plugin để gửi e-mail. Điều này là sai. Bạn có thể dễ dàng điều chỉnh bất kỳ thư viện gửi thư JVM nào cho ứng dụng Play của mình. Dưới đây là một ví dụ sử dụng Apache Commons Email, thích nghi cho sự đơn giản từ here và mã sản xuất riêng của chúng tôi.
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(...))
Vì việc gửi e-mail được thực hiện một cách đáng kể trong Play, tôi rất ngạc nhiên khi bạn sử dụng plugin. Tùy thuộc vào một plugin có thể làm tổn thương bạn nếu bạn muốn nâng cấp các phiên bản Play, và tôi không cảm thấy một cái gì đó mà mất 30 LoC để hoàn thành chính mình là giá trị nó. Mã của chúng tôi đã nâng cấp chưa sửa đổi từ Play 2.0 lên 2.1 lên 2.2.
- 1. Hết bộ nhớ trong PlayFramework 2.0
- 2. Gỡ lỗi Playframework 2.0 trong Eclipse
- 3. Bắt đầu với Playframework 2.0 và Selenium
- 4. Biểu mẫu Playframework và hai nút gửi
- 5. GZIP nội dung phản hồi trong PlayFramework 2.0
- 6. Cách thiết lập công việc eclipse-ide trên playframework 2.0
- 7. Gửi một bảng trong email
- 8. cách gửi mẫu email wth email C#
- 9. ASP.NET Gửi Email
- 10. PHP Gửi email BCC
- 11. Kiểm tra email gửi
- 12. vb.net gửi email
- 13. Phương thức gửi email
- 14. gửi email từ localhost
- 15. Email GitLab không gửi?
- 16. Gửi email mhtml - C#
- 17. cách gửi email HTML
- 18. Gửi email bằng OAuth
- 19. Gửi email từ Elmah?
- 20. Gửi email bằng C
- 21. cách sử dụng lại trình phân tích cú pháp anorm trong playframework 2.0 với scala
- 22. Gửi email trong asp.net với tên cụ thể thay vì email người gửi
- 23. Cakephp 2.0 Cài đặt SMTP trên Email không hoạt động
- 24. sử dụng scalatest trong dự án playframework
- 25. Gửi email qua GMail trong .NET
- 26. Gửi email bằng Gmail trong android
- 27. Gửi email trong Android bằng JavaMail API
- 28. Gửi email từ dòng lệnh trong symfony2
- 29. cách gửi email trong iphone SDK?
- 30. Gửi nội dung email trong HTML
Danh sách plugin này dành cho 2.0 là tiện dụng - lưu ý rằng nó được cho là tạm thời: https://github.com/playframework/Play20/wiki/Modules –
@Codemwnci: Tôi đang xem qua mô-đun này cho hỗ trợ tệp đính kèm nhưng dường như là ẩn hoặc không tồn tại. Lời khuyên? – Samo
Đường dẫn sai trong readme - thử "" com.typesafe "%" play-plugins-mailer_2.9.1 "%" 2.0.4 "'. chú ý '_2.9.1'. – Trick