I have created a custom form that will post to a controller, where it will then send an email via the following snippet in my post action:
$to = "[email protected]";
$subject = "Vish";
$body = "<img src='logo.jpg' >";
$body .= "<p>Name : " . $name . "<p>";
$body .= "<p>Email : " . $email . "<p>";
$body .= "<p>Address Line 1 : " . $address_line_1 . "<p>";
$body .= "<p>Address Line 2 : " . $address_line_2 . "<p>";
$body .= "<p>Address Line 3 : " . $address_line_3 . "<p>";
$body .= "<p>City : " . $city . "<p>";
$body .= "<p>Post Code : " . $postcode . "<p>";
$body .= "<p>Country : " . $country . "<p>";
$body .= "<br /><p>Kind regards,</p><p>vish</p>";
$from = '[email protected]';
$mail = Mage::getModel('core/email');
$mail->setToName("Vish");
$mail->setToEmail($to);
$mail->setBody($body);
$mail->setSubject($subject);
$mail->setFromEmail($from);
$mail->setType('html');
$mail->setBodyHTML($body);
$mail->send();
This works well, but I am not sure if it is the correct way to do this or if there is a better standardised way?
I have seen and attempted this way but the email body is empty:
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('vish_email_template');
//Getting the Store E-Mail Sender Name.
$senderName = Mage::getStoreConfig('trans_email/ident_general/name');
//Getting the Store General E-Mail.
$senderEmail = Mage::getStoreConfig('trans_email/ident_general/email');
//Variables for Confirmation Mail.
$emailTemplateVariables = array();
$emailTemplateVariables['name'] = $name;
$emailTemplateVariables['email'] = $email;
//Appending the Custom Variables to Template.
$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);
//Sending E-Mail to Customers.
$mail = Mage::getModel('core/email')
->setToName($senderName)
->setToEmail($email)
->setBody($processedTemplate)
->setSubject($subject)
->setFromEmail($senderEmail)
->setFromName($senderName)
->setType('html');
try{
//Confimation E-Mail Send
$mail->send();
}
catch(Exception $error)
{
Mage::getSingleton('core/session')->addError($error->getMessage());
}
I have got it working rather splendidly via:
$mailTemplate = Mage::getModel('core/email_template');
/* @var $mailTemplate Mage_Core_Model_Email_Template */
$mailTemplate->setDesignConfig(array('area' => 'frontend'))
->setReplyTo($post['email'])
->setType('Html')
->sendTransactional(
Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE),
Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER),
Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT),
"Vish Sales",
array('data' => $postObject)
);
if (!$mailTemplate->getSentSuccess()) {
throw new Exception();
} else{
$subject = "Vish Request";
$body = "
<p>Thank you for requesting our new catalogue, which will be posted out to you immediately.</p>"
$sender = Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER);
$mail = Mage::getModel('core/email');
$mail->setToName($name);
$mail->setFromName("no-reply");
$mail->setToEmail($email);
$mail->setReplyTo('[email protected]');
$mail->setBody($body);
$mail->setSubject($subject);
$mail->setFromEmail(Mage::getStoreConfig('trans_email/ident_' . $sender . '/email'));
$mail->setType('html');
$mail->setBodyHTML($body);
$mail->send();
}
However, I am not sure if the section below is done in a correct manner:
$subject = "Vish Request";
$body = "
<p>Thank you for requesting our new catalogue, which will be posted out to you immediately.</p>"
$sender = Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER);
$mail = Mage::getModel('core/email');
$mail->setToName($name);
$mail->setFromName("no-reply");
$mail->setToEmail($email);
$mail->setReplyTo('[email protected]');
$mail->setBody($body);
$mail->setSubject($subject);
$mail->setFromEmail(Mage::getStoreConfig('trans_email/ident_' . $sender . '/email'));
$mail->setType('html');
$mail->setBodyHTML($body);
$mail->send();
Thus, could someone confirm if this is an acceptable way or how could I do the same as the above but for multiple templates?