1
- use std:: collections:: HashMap ;
2
1
use std:: fs;
3
2
4
3
use dotenv:: dotenv;
5
4
use lettre:: message:: header:: ContentType ;
6
5
use lettre:: message:: { Attachment , MultiPart , SinglePart } ;
7
6
use lettre:: transport:: smtp:: authentication:: Credentials ;
8
7
use lettre:: { Message , SmtpTransport , Transport } ;
8
+ use liquid:: Object ;
9
9
use rocket:: http:: Status ;
10
10
use rocket:: serde:: json:: Json ;
11
11
use rocket:: { get, post, routes} ;
@@ -17,7 +17,7 @@ struct EmailRequest {
17
17
ics_name : Option < String > ,
18
18
email_address : String ,
19
19
subject : String ,
20
- parameters : HashMap < String , String > ,
20
+ parameters : Object ,
21
21
}
22
22
23
23
#[ post( "/send?<secret>" , format = "json" , data = "<data>" ) ]
@@ -81,24 +81,27 @@ fn send(secret: String, data: Json<EmailRequest>) -> Status {
81
81
. unwrap ( )
82
82
. parse ( & template_file)
83
83
. unwrap ( ) ;
84
+
84
85
let body = template. render ( & data. parameters ) . unwrap ( ) ;
85
86
86
87
// Create email message
87
88
let mut multipart = MultiPart :: alternative ( ) . singlepart ( SinglePart :: html ( body. to_string ( ) ) ) ;
88
89
89
90
// Attach ICS file
90
- if let Some ( ics_name) = & data. ics_name { match fs:: read ( format ! ( "ics/{ics_name}.ics" ) ) {
91
- Ok ( ics) => {
92
- multipart = multipart. singlepart (
93
- Attachment :: new ( format ! ( "{}.ics" , ics_name) )
94
- . body ( ics, ContentType :: parse ( "text/calendar" ) . unwrap ( ) ) ,
95
- ) ;
91
+ if let Some ( ics_name) = & data. ics_name {
92
+ match fs:: read ( format ! ( "ics/{ics_name}.ics" ) ) {
93
+ Ok ( ics) => {
94
+ multipart = multipart. singlepart (
95
+ Attachment :: new ( format ! ( "{}.ics" , ics_name) )
96
+ . body ( ics, ContentType :: parse ( "text/calendar" ) . unwrap ( ) ) ,
97
+ ) ;
98
+ }
99
+ Err ( e) => {
100
+ eprintln ! ( "Error reading ICS file: {:#?}" , e) ;
101
+ return Status :: InternalServerError ;
102
+ }
96
103
}
97
- Err ( e) => {
98
- eprintln ! ( "Error reading ICS file: {:#?}" , e) ;
99
- return Status :: InternalServerError ;
100
- }
101
- } } ;
104
+ } ;
102
105
103
106
// Create email
104
107
let email = Message :: builder ( )
0 commit comments