setName('test-email') ->setAliases(['testemail']) ->addOption( 'to', 't', InputOption::VALUE_REQUIRED, 'An email address to send the email to' ) ->addOption( 'env', 'e', InputOption::VALUE_OPTIONAL, 'The environment to trigger a specific configuration. For example: localhost, mysite.dev, www.mysite.com' ) ->addOption( 'subject', 's', InputOption::VALUE_OPTIONAL, 'A subject for the email' ) ->addOption( 'body', 'b', InputOption::VALUE_OPTIONAL, 'The body of the email' ) ->setDescription('Sends a test email using the plugin\'s configuration') ->setHelp('The test-email command sends a test email using the plugin\'s configuration'); } /** * @return int */ protected function serve() { // TODO: remove when requiring Grav 1.7+ if (method_exists($this, 'initializeGrav')) { $this->initializeThemes(); } $this->output->writeln(''); $this->output->writeln('Current Configuration:'); $this->output->writeln(''); $grav = Grav::instance(); $email_config = new Data($grav['config']->get('plugins.email')); if ($email_config->get('mailer.smtp.password')) { $password = $email_config->get('mailer.smtp.password'); $obfuscated_password = str_repeat('*', strlen($password) - 2) . substr($password, -2); $email_config->set('mailer.smtp.password', $obfuscated_password); } dump($email_config); $this->output->writeln(''); $grav['Email'] = new Email(); $to = $this->input->getOption('to') ?: $grav['config']->get('plugins.email.to'); $subject = $this->input->getOption('subject'); $body = $this->input->getOption('body'); if (!$subject) { $subject = 'Testing Grav Email Plugin'; } if (!$body) { $configuration = print_r($email_config, true); $body = $grav['language']->translate(['PLUGIN_EMAIL.TEST_EMAIL_BODY', $configuration]); } $sent = EmailUtils::sendEmail(['subject'=>$subject, 'body'=>$body, 'to'=>$to]); if ($sent) { $this->output->writeln("Message sent successfully!"); } else { $this->output->writeln("Problem sending email..."); } return 0; } }