This is my code:
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('newsletter_subscription_confirm_email_template');
$emailTemplate->setSenderEmail(Mage::getStoreConfig('trans_email/ident_general/email', $storeId));
$emailTemplate->setSenderName(Mage::getStoreConfig('trans_email/ident_general/name', $storeId));
try {
$emailTemplate->send($email, $order->getData('customer_firstname')." ".$order->getData('customer_lastname'), array());
Mage::getSingleton('core/session')->addSuccess(Mage::helper('customer')->__('An email was sent with a confirmation url'));
$this->redirectSubscribeSuccess();
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
I received the the email with the content of the transactional email, except that the
{{var subscriber.getConfirmationLink()}}
is empty . Do you know why ?
Thanks.!
[UPDATE]
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('newsletter_subscription_confirm_email_template');
$emailTemplate->setSenderEmail(Mage::getStoreConfig('trans_email/ident_general/email', Mage::app()->getStore()->getId()));
$emailTemplate->setSenderName(Mage::getStoreConfig('trans_email/ident_general/name', Mage::app()->getStore()->getId()));
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
if (!$subscriber->getId()
|| $subscriber->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED
|| $subscriber->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE) {
$subscriber->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED);
$subscriber->setSubscriberEmail($email);
$subscriber->setSubscriberConfirmCode($subscriber->RandomSequence());
$subscriber->setStoreId(Mage::app()->getStore()->getId());
$subscriber->setCustomerId($order->getData('customer_id'));
}
try {
$emailTemplate->send($email, $order->getData('customer_firstname')." ".$order->getData('customer_lastname'), array('subscriber' => $subscriber));
Mage::getSingleton('core/session')->addSuccess(Mage::helper('customer')->__('An email was sent with a confirmation url'));
$this->redirectSubscribeSuccess();
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
Best Answer
If you look at default Magento confirmation email send function
Mage_Newsletter_Model_Subscriber::sendConfirmationRequestEmail
You will see that they have used$this
, object ofnewsletter/subscriber
model to pass assubscriber
in it.You need to pass object of
newsletter/subscriber
to your custom email send function to make{{var subscriber.getConfirmationLink()}}
work. In your code you have passed blankarray()
You can simply useYou may need to load current subscriber in
$newsletterObject
.