Magento Send Email dengan Custom Email Template

Setelah membaca judul artikel pastilah muncul pertanyaan, kenapa mengirim email dengan custom email template? Saya mempunyai 2 alasan. Yang pertama adalah email yang kita kirimkan akan memiliki desain yg lebih cantik daripada hanya sekedar email text saja. Tentu akan menarik lebih banyak pengunjung ke website kita (untuk SEO). Yang kedua adalah kita dapat mengontrol variabel yang kita kirimikan kepada klien.

Jika anda seorang web developer pastilah anda pernah sesekali menemukan kebutuhan pengiriman email menggunakan custom template, baik itu equest dari klien ataupun untuk kerperluan sendiri.

Disini saya mendesain email menggunakan Transactional Email pada magento tepatnya di System -> Transactional Emails
Buatlah email baru dengan Add New Template. Disini saya menggunakan template yang sudah ada. Misalkan kita pilih template ‘New Invoice’. Kemudian Load Template.
Template Name dan Template Subject kita isi dengan ‘Test Custom Email’.

Dengan isinya :

Nama1(email1) mendapat undangan dari Nama2(email2) untuk datang pada tanggal : (tanggal) menghadiri acara pertemuan Magento Indonesia di Bali

Dengan Variable =>

{{htmlescape var=$nama1.nama1}}({{htmlescape var=$email1.email1}}) mendapat undangan dari {{htmlescape var=$nama2.nama2}}({{htmlescape var=$email2.email2}}) untuk datang pada tanggal : {{htmlescape var=$tanggal.tanggal}} menghadiri acara pertemuan Magento Indonesia di Bali

Edit Template content sesuai keinginan anda. Save template.

Kemudian buatlah sebuah file .phtml untuk tampilan frontend dan tampilkan melalui CMS.
Misalkan form dan proses pengirimannya sebagai berikut.

if(!empty($_GET['name1']) && !empty($_GET['name2']) && !empty($_GET['email1']) && !empty($_GET['email2'])){
	
	$mailTemplate = Mage::getModel('core/email_template');
	/* @var $mailTemplate Mage_Core_Model_Email_Template */

	$translate  = Mage::getSingleton('core/translate');
	 
	$templateId = 56; //id transactional email template yang anda buat tadi
	$template_collection =  $mailTemplate->load($templateId);                               
	$template_data = $template_collection->getData();
	if(!empty($template_data))
	{
		$templateId = $template_data['template_id'];
		$mailSubject = $template_data['template_subject'];                         
		 
		//Mengambil data pengirim dari Backend > System > Configuration > Store Email Addresses > General Contact
		$from_email = Mage::getStoreConfig('trans_email/ident_general/email'); //email pengirim
		$from_name = Mage::getStoreConfig('trans_email/ident_general/name'); //nama pengirim
 
		$sender = array('name'  => $from_name,
						'email' => $from_email);                                
		 
		$vars = array('name1'=>$_GET['name1'],
						'name2'=>$_GET['name2'],
						'email1'=>$_GET['email1'],
						'email2'=>$_GET['email2'],
						'tanggal'=>$_GET['tanggal']);                   
		
		$storeId = Mage::app()->getStore()->getId();
		$model = $mailTemplate->setReplyTo($sender['email'])->setTemplateSubject($mailSubject);
		
		$email = $_GET['email1'];
		$name = $_GET['name1'];                                           
		$model->sendTransactional($templateId, $sender, $email, $name, $vars, $storeId);                    
		if (!$mailTemplate->getSentSuccess()) {
				throw new Exception();
		}
		$translate->setTranslateInline(true);

	} 
}

<h1>Undang Teman Untuk Bergabung pada Workshop Magento di Bali 15-10-2013 dan dapatkan diskon 10%</h1>
<form method="GET" action="url-action" name="form_name" id="form_id">
	<input type="text" name="name1" />
	<input type="text" name="name2" />
	<input type="text" name="email1" />
	<input type="text" name="email2" />
	<input type="text" name="tanggal" value="15-10-2013" readonly="readonly" />
	<input type="submit" value="Kirim" />
</form>

Penjelasan : Pada email yg dikirimkan (email1) sebagai email pengirim adalah email website pada magento anda ($from_email) dan Nama Pengirim adalah nama website Magento anda ($from_name).

Violaaa , anda sudah bisa mengirim email dengan custom template pada Magento.

Selamat mencoba dan semoga artikel saya membantu 😀

Magento Website E-commerce

Magento – Send Email

Untuk mengirim email di magento kita dapat dengan mudah melakukannya dengan menggunakan Zend_Mail
Berikut contohnya :

/**
 * Send email
 */
public function sendEmail()
{
    $fromEmail = "[email protected]"; // sender email address
    $fromName = "John Doe"; // sender name
 
    $toEmail = "[email protected]"; // recipient email address
    $toName = "Mark Doe"; // recipient name
 
    $body = "This is Test Email!"; // body text
    $subject = "Test Subject"; // subject text
 
    $mail = new Zend_Mail();        
 
    $mail->setBodyText($body);
 
    $mail->setFrom($fromEmail, $fromName);
 
    $mail->addTo($toEmail, $toName);
 
    $mail->setSubject($subject);
 
    try {
        $mail->send();
    }
    catch(Exception $ex) {
        // Saya asumsikan anda mempunyai custom_modul.
        // Jika tidak, anda dapat mengganti 'modulku' dengan default magento 'customer'
        Mage::getSingleton('core/session')
            ->addError(Mage::helper('modulku')
            ->__('Unable to send email.'));
    }
}

Selesai, semoga membantu 😀