plunk/transactional
Types
pub type Contact {
Contact(id: String, email: String)
}
Constructors
-
Contact(id: String, email: String)
pub type Email {
Email(contact: Contact, email: String)
}
Constructors
-
Email(contact: Contact, email: String)
pub type SendTransactionalEmailResponse {
SendTransactionalEmailResponse(
success: Bool,
emails: List(Email),
timestamp: Option(String),
)
}
Constructors
-
SendTransactionalEmailResponse( success: Bool, emails: List(Email), timestamp: Option(String), )
pub type To {
Address(String)
Addresses(List(String))
}
Constructors
-
Address(String)
-
Addresses(List(String))
pub type TransactionalEmail {
TransactionalEmail(
to: To,
subject: String,
body: String,
name: Option(String),
from: Option(String),
)
}
Constructors
-
TransactionalEmail( to: To, subject: String, body: String, name: Option(String), from: Option(String), )
Functions
pub fn decode(
res: Response(String),
) -> Result(SendTransactionalEmailResponse, PlunkError)
Decode the raw response into a SendTransactionalEmailResponse
type wrapped in a Result
type that can be pattern matched on.
pub fn send(
instance: Instance,
mail mail: TransactionalEmail,
) -> Request(String)
Send a transactional email
Example
import gleam/option.{None}
import gleam/hackney
import plunk
import plunk/transactional.{Single, TransactionalEmail}
fn main() {
let instance = plunk.new(key: "YOUR_API_KEY")
let req =
instance
|> transactional.send(
mail: TransactionalEmail(
to: Address("someone@example.com"),
subject: "Hello",
body: "<h1>Hello, World!</h1>",
name: None,
from: None,
)
)
let assert Ok(resp) = hackney.send(req)
let assert Ok(data) = transactional.decode(resp)
// do whatever you want with the data
}
pub fn send_transactional_email_decoder() -> fn(Dynamic) ->
Result(SendTransactionalEmailResponse, List(DecodeError))