108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
|   | <?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; | ||
|  |     } | ||
|  | } |