diff options
Diffstat (limited to 'lib/domain/libimagmail/src/send.rs')
-rw-r--r-- | lib/domain/libimagmail/src/send.rs | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/lib/domain/libimagmail/src/send.rs b/lib/domain/libimagmail/src/send.rs deleted file mode 100644 index 0c458bc8..00000000 --- a/lib/domain/libimagmail/src/send.rs +++ /dev/null @@ -1,111 +0,0 @@ -// -// imag - the personal information management suite for the commandline -// Copyright (C) 2015-2020 Matthias Beyer <mail@beyermatthias.de> and contributors -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; version -// 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -// - -use config::MailConfig; - -pub struct MailSender<'a> { - config: &'a MailConfig, - account_name_to_send_with: Option<String>, - - rescan_maildirs: bool, -} - -impl MailSender { - pub fn new(config: &MailConfig) -> Self { - MailSender { - config, - account_name_to_send_with: None, - rescan_maildirs: false - } - } - - pub fn send_account(mut self, name: String) -> Self { - self.account_name_to_send_with = Some(name); - self - } - - pub fn rescan_maildirs(mut self, b: bool) -> Self { - self.rescan_maildirs = b; - self - } - - pub fn run(&self, store: &Store) -> Result<()> { - let sendcommand = match self.account_name_to_send_with { - Some(name) => self.config.sendcommand_for_account(name), - None => self.confnig.sendcommand(), - }; - - let postsendcommand = match self.account_name_to_send_with { - Some(name) => self.config.postsendcommand_for_account(name), - None => self.confnig.sendcommand(), - }; - - let account = config - .account(self.account_name_to_send_with) - .ok_or_else(|| anyhow!("Account '{}' does not exist", self.account_name_to_send_with))?; - - if sendcommand.contains(" ") { - // error on whitespace in command - } - - if postsendcommand.contains(" ") { - // error on whitespace in command - } - - // sendcommand - // - let outgoingbox = account - .outgoingbox - .to_str() - .ok_or_else(|| anyhow!("Cannot use '{:?}' as outgoingbox", account.outgoingbox))?; - - let mut output = Command::new(sendcommand) - // TODO: Add argument support - // TODO: Add support for passing config variables - // TODO: Add support for passing environment - .arg(outgoingbox) - .wait_with_output() - .context("Mail sending")?; - - write!(rt.stdout(), "{}", output.stdout)?; - write!(rt.stderr(), "{}", output.stderr)?; - - // TODO: Move all files in outgoingbox to account.sentbox - - // postfetchcommand - - let output = Command::new(postsendcommand) - // TODO: Add argument support - // TODO: Add support for passing config variables - .wait_with_output() - .context("Post 'Mail sending' command")?; - - write!(rt.stdout(), "{}", output.stdout)?; - write!(rt.stderr(), "{}", output.stderr)?; - - if self.rescan_maildirs { - // scan - // account.maildirroot - // recursively for new mail and store them in imag - } - } - -} - - |