123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- namespace Grav\Plugin\Console;
- use Grav\Common\Grav;
- use Grav\Common\Data\Data;
- use Grav\Console\ConsoleCommand;
- use Grav\Plugin\Email\Email;
- use Grav\Plugin\Email\Utils as EmailUtils;
- use Symfony\Component\Console\Input\InputOption;
- /**
- * Class TestEmailCommand
- * @package Grav\Console\Cli\
- */
- class TestEmailCommand extends ConsoleCommand
- {
- /** @var array */
- protected $options = [];
- /**
- * @return void
- */
- protected function configure()
- {
- $this
- ->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 <info>test-email</info> 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('<yellow>Current Configuration:</yellow>');
- $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("<green>Message sent successfully!</green>");
- } else {
- $this->output->writeln("<red>Problem sending email...</red>");
- }
- return 0;
- }
- }
|