Open nickfarrant opened 5 years ago
Hello,
Same issue for me. I couldn't find any method to convert the view into a String value. Any news on that?
Thanks, Sylvain
@joscdk What were you doing to make leaf work?
@nickfarrant @goamigo try the following
let content = try req.view().render("Emails/my-email", [
"name": "Bob"
])
return content.flatMap(to: Response.self) { content in
let contentString = String(data: content.data, encoding: .utf8)
let message = Mailgun.Message(
from: "postmaster@example.com",
to: "example@gmail.com",
subject: "Newsletter",
text: "",
html: contentString ?? ""
)
let mailgun = try req.make(Mailgun.self)
return try mailgun.send(message, on: req)
}
Thanks @joscdk ! I've opened a PR that should make life a little easier for folks sending leaf templates. https://github.com/twof/VaporMailgunService/pull/28
Feel free to try that branch out, and if you run into any problems let me know! Code reviews are also always appreciated.
Here's how to do it with Vapor 4 and Mailgun 5.0.0:
let content = req.view.render("Emails/my-email", [
"name": "Bob"
])
return content.flatMapThrowing { content in
let contentString = String(buffer: content.data)
let message = MailgunMessage(
from: "postmaster@example.com",
to: "example@gmail.com",
subject: "Newsletter",
text: "",
html: contentString
)
return req.mailgun.send(message)
}
Hi,
Great library, works really well.
The only issue I am having is using a Leaf template. The example code in the readme is generating an error in Xcode for me.
content
is of typeFuture<View>
, butMailgun.Message
expect aString
for thehtml
parameter.Is there a way around this or am I missing something obvious?
I have tried
html: "\(content)"
, but my Leaf template then generates:NIO.EventLoopFuture
in the email.Thanks in advance, Nick