More or less a few arrays to setup, I would suggest tacking onto an observer event (or a core rewrite, in which case you'll find the send function for customer registrations in the mage core customer folder!) to send your custom script out (there's a list of the observers available if you google!):
Declare the sender as an array:
$sender = Array('name' => 'You',
'email' => 'you@domain.com');
The recipient address, just literally needs to be a string, similarly to the mail subject.
$email = 'customer@customer.com';
Set your template id:
$templateId = 40;
And finally declare your custom variables to be sent along to the template:
$vars = Array('nameOfCustomer' => $customerName,
'shippingDetails' => $shipping,
'storeName' => $store_name,
'storeURL' => $store_url,
'orderId' => $orderId);
Followed up with the send function, i tend to just leave the $name as a null var:
$storeId = Mage::app()->getStore()->getId();
$translate = Mage::getSingleton('core/translate');
Mage::getModel('core/email_template')
->setTemplateSubject($mailSubject)
->sendTransactional($templateId, $sender, $email, $name, $vars, $storeId);
Then in your template call the var as literal for example:
{{var storeName}}
When passing a variable this way:
{{layout handle="sales_email_order_items" order=$order test=$test}}
You make it available in the email/order/items.phtml
template only.
You are able to get it there with: $this->getTest()
or $this->getData('test')
.
To pass it further to the email/order/items/order/default.phtml
edit the items.phtml
file and add this
$item->setTest($this->getTest());
before calling
<?php echo $this->getItemHtml($_item) ?>
To make it shorter, replace:
<?php echo $this->getItemHtml($_item) ?>
with
<?php echo $this->getItemHtml($_item->setTest($this->getTest())) ?>
Best Answer
I figure it out. I use this code to send the email in the phtml file