Registry key "dotmailer_current_template_id" already exists in /var/www/html/vendor/magento/framework/Registry.php:60
I am getting this error when I try to programmatically send an email with magento 2.
My code is as a follows. The AmastyConfig object has methods that check if my configurations are valid before sending the email.
public function sendStartSubscriptionEmail( AmastySubscriptionInterface $subscription,$storeId){ $customerEmail= $this->customerRepositoryInterface->getById($subscription->getCustomerId())->getEmail(); if ($this->AmastyConfig->isNotifySubscriptionPurchased($storeId)) { $template = $this->AmastyConfig->getEmailTemplateSubscriptionPurchased($storeId); //$this->Notifier->sendEmail( $subscription, $template, $storeId, $customerEmail); }}
This is the definition of the send email class.
public function sendEmail( AmastySubscriptionInterface $subscription, string $template, int $storeId, string $email, array $templateVariables = [] ) { $templateVariables = array_merge($this->prepareTemplateVariables($subscription), $templateVariables);
$data = new DataObject(
[
'template' => $template,
'store_id' => $storeId,
'email_recipient' => $email,
'email_sender' => $this->config->getEmailSender($storeId),
'template_variables' => $templateVariables
]
);
$this->eventManager->dispatch('amasty_recurring_send_email', ['email_data' => $data]);
}
}
This is the Observer:
class Notification implements ObserverInterface { /** * @var TransportBuilder */ private $transportBuilder;
public function __construct(TransportBuilder $transportBuilder)
{
$this->transportBuilder = $transportBuilder;
}
/**
* @param Observer $observer
*
* @throws \Exception
*/
public function execute(Observer $observer)
{
$data = $observer->getData('email_data');
if (!$data) {
throw new \Exception('Email data not specified');
}
/** @var TransportBuilder $transportBuilder */
$transportBuilder = clone $this->transportBuilder;
$transportBuilder->setTemplateIdentifier($data['template'] ?? null)
->setTemplateVars($data['template_variables'] ?? [])
->setTemplateOptions(
[
Area::PARAM_AREA=> Area::AREA_FRONTEND,
Store::ENTITY => $data['store_id'] ?? null
]
)
->setFrom($data['email_sender'] ?? null)
->addTo($data['email_recipient'] ?? null);
/** @var \Magento\Framework\Mail\TransportInterface $transport */
$transport = $transportBuilder->getTransport();
$transport->sendMessage();
}
}