diff --git a/src/basic/keywords/send_mail.rs b/src/basic/keywords/send_mail.rs index 6d9df792..6613e839 100644 --- a/src/basic/keywords/send_mail.rs +++ b/src/basic/keywords/send_mail.rs @@ -287,27 +287,23 @@ pub fn send_mail_keyword(state: Arc, user: UserSession, engine: &mut E let user_for_task = user_fn.clone(); std::thread::spawn(move || { - let result = std::panic::catch_unwind(|| { - let rt = tokio::runtime::Builder::new_multi_thread() - .worker_threads(2) - .enable_all() - .build(); + let rt = tokio::runtime::Builder::new_multi_thread() + .worker_threads(2) + .enable_all() + .build(); - if let Ok(rt) = rt { - rt.block_on(async move { - execute_send_mail(&state_for_task, &user_for_task, &to_str, &subject_str, &body_str, atts, None).await - }) - } else { - Err("Failed to build tokio runtime".to_string()) - } - }); - - let result = match result { - Ok(r) => r, - Err(e) => { - log::error!("send_mail thread panicked: {:?}", e); - Err(format!("send_mail thread panicked: {:?}", e)) + let result = if let Ok(rt) = rt { + match rt.block_on(async { + execute_send_mail(&state_for_task, &user_for_task, &to_str, &subject_str, &body_str, atts, None).await + }) { + Ok(msg_id) => Ok(msg_id), + Err(e) => { + log::error!("execute_send_mail error: {}", e); + Err(e) + } } + } else { + Err("Failed to build tokio runtime".to_string()) }; let _ = tx.send(result);