casdoor_rust_sdk/
email.rs1use serde::Serialize;
16
17use crate::client::{Client, PostBody};
18use crate::error::Result;
19
20#[derive(Serialize)]
21struct EmailForm<'a> {
22 title: &'a str,
23 content: &'a str,
24 sender: &'a str,
25 receivers: &'a [&'a str],
26}
27
28impl Client {
29 pub async fn send_email(
31 &self,
32 title: &str,
33 content: &str,
34 sender: &str,
35 receivers: &[&str],
36 ) -> Result<()> {
37 self.do_send_email(title, content, sender, receivers, &[])
38 .await
39 }
40
41 pub async fn send_email_by_provider(
43 &self,
44 title: &str,
45 content: &str,
46 sender: &str,
47 provider: &str,
48 receivers: &[&str],
49 ) -> Result<()> {
50 self.do_send_email(title, content, sender, receivers, &[("provider", provider)])
51 .await
52 }
53
54 async fn do_send_email(
55 &self,
56 title: &str,
57 content: &str,
58 sender: &str,
59 receivers: &[&str],
60 query: &[(&str, &str)],
61 ) -> Result<()> {
62 let post_bytes = serde_json::to_vec(&EmailForm {
63 title,
64 content,
65 sender,
66 receivers,
67 })?;
68
69 self.do_post("send-email", query, PostBody::Raw(post_bytes))
70 .await?;
71
72 Ok(())
73 }
74}