The question:
I am trying to pass data into my email template, something like this:
[‘catalogue_url’ => ‘http://url.html‘]
I am struggling to access and output it in the email, I have tried the following:
Test 1: {{var $catalogue_url|raw}}
Test 2: {{var $catalogue_url}}
Test 3: {{var $catalogue_url}}
Test 4: {{var catalogue_url}}
Test 5: {{catalogue_url}}
My email sending code:
$transport = $this->_transportBuilder
->setTemplateIdentifier($code)
->setTemplateModel($model)
->setTemplateOptions([
'area' => $area,
'store' => $this->storeManager->getStore()->getId(),
])
->setTemplateVars(['data' => $data])
->setFrom($sender)
->addTo($to)
->getTransport();
$transport->sendMessage();
I will try with $data.catalogue_url now.
What is wrong with this?
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
Try this:
$templateOptions = [
'area' => MagentoFrameworkAppArea::AREA_FRONTEND,
'store' => $this->storeManager->getStore()->getId()
];
$templateVars = [
'store' => $this->storeManager->getStore(),
'admin_name' => 'Admin',
'subject' => 'subject',
'catalogue_url' => 'pass url here'
];
$from = ['email' => '[email protected]', 'name' => 'from name'];
$to= "[email protected]"
$this->inlineTranslation->suspend();
$transport = $this->transportBuilder->setTemplateIdentifier('template name or id')
->setTemplateOptions($templateOptions)
->setTemplateVars($templateVars)
->setFrom($from)
->addTo($to)
->getTransport();
$transport->sendMessage();
$this->inlineTranslation->resume();
Use in email template {{var catalogue_url}}
variable
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0