SenderAnalyzer.php in Mailhandler 8
File
src/Plugin/inmail/Analyzer/SenderAnalyzer.php
View source
<?php
namespace Drupal\mailhandler\Plugin\inmail\Analyzer;
use Drupal\inmail\DefaultAnalyzerResult;
use Drupal\inmail\MIME\MimeMessageInterface;
use Drupal\inmail\Plugin\inmail\Analyzer\AnalyzerBase;
use Drupal\inmail\ProcessorResultInterface;
class SenderAnalyzer extends AnalyzerBase {
public function analyze(MimeMessageInterface $message, ProcessorResultInterface $processor_result) {
$result = $processor_result
->getAnalyzerResult();
$this
->findSender($message, $result);
}
protected function findSender(MimeMessageInterface $message, DefaultAnalyzerResult $result) {
$sender = NULL;
$user = NULL;
$matches = [];
$from = $message
->getFrom()[0]
->getAddress();
preg_match('/[^@<\\s]+@[^@\\s>]+/', $from, $matches);
if (!empty($matches)) {
$sender = reset($matches);
}
$matched_users = \Drupal::entityTypeManager()
->getStorage('user')
->loadByProperties([
'mail' => $sender,
]);
if (!empty($matched_users)) {
$user = reset($matched_users);
}
if (!$result
->getSender()) {
$result
->setSender($sender);
}
if ($user && !$result
->isUserAuthenticated()) {
$result
->setAccount($user);
}
}
}