Cara mengirim email menggunakan Magento

16

Saya telah membuat formulir dengan beberapa bidang input di Magento. Tetapi ketika saya klik kirim, Magento tidak akan mengirim email.

Bagaimana saya bisa mengirim email dasar di Magento?

Mouni
sumber
Haruskah saya perlu membuat modul terpisah di direktori app / code / local /.
Mouni
Mengapa tidak menjadi penutur asli bahasa Inggris dan menulis tutorial rumit dengan prasyarat kesalahan ketik konyol untuk penguasaan Magento ???
Spencer Williams
1
No @SpencerWilliams "Ada alasannya"
Ejaz

Jawaban:

35

fungsi sederhana untuk mengirim email di magento

<?php
    public function sendMailAction() 
    {
        $html="
        put your html content here
        blah blah

        ";
        $mail = Mage::getModel('core/email');
        $mail->setToName('Your Name');
        $mail->setToEmail('Youe Email');
        $mail->setBody('Mail Text / Mail Content');
        $mail->setSubject('Mail Subject');
        $mail->setFromEmail('Sender Mail Id');
        $mail->setFromName("Msg to Show on Subject");
        $mail->setType('html');// You can use Html or text as Mail format
        $mail->setBodyHTML($html);  // your content or message

        try {
            $mail->send();
            Mage::getSingleton('core/session')->addSuccess('Your request has been sent');
            $this->_redirect('');
        }
        catch (Exception $e) {
            Mage::getSingleton('core/session')->addError('Unable to send.');
            $this->_redirect('');
        }
    }
?>

Referensi

Qaisar Satti
sumber
Di direktori mana saya harus meletakkan kode di atas. Bisakah Anda menyarankan saya.
Mouni
Anda dapat menambahkan file controller, helper atau blokir di tempat yang Anda inginkan ..
Qaisar Satti
Saya belum membuat pembantu atau model apa pun, lalu bagaimana saya bisa menggunakannya. Tolong jelaskan
Mouni
kemudian tambahkan fungsi ini di file phtml Anda dan kirim email dari sana ..
Qaisar Satti
Dapatkah saya menggunakan variabel sebagai $ mail-> setToName ($ name). Apakah berfungsi.
Mouni
5

Buat Formulir Template Baru "Email Transaksional".

hello {{var customerName}},
  You received test template. 
Thank you

Setelah membuat Template Baru Catat ID- nya

Buat aksi pengontrol

public function sendEnquiry()
{
$customer = Mage::getSingleton('customer/session')->getCustomer();

$templateId = 8; // Enter you new template ID
$senderName = Mage::getStoreConfig('trans_email/ident_support/name');  //Get Sender Name from Store Email Addresses
$senderEmail = Mage::getStoreConfig('trans_email/ident_support/email');  //Get Sender Email Id from Store Email Addresses
$sender = array('name' => $senderName,
            'email' => $senderEmail);

// Set recepient information
$recepientEmail = $customer->getEmail();
$recepientName = $customer->getName();      

// Get Store ID     
$store = Mage::app()->getStore()->getId();

// Set variables that can be used in email template
$vars = array('customerName' => $customer->getName());  


// Send Transactional Email
Mage::getModel('core/email_template')
    ->sendTransactional($templateId, $sender, $recepientEmail, $recepientName, $vars, $storeId);

Mage::getSingleton('core/session')->addSuccess($this->__('We Will Contact You Very Soon.'));
}

Sekarang Anda dapat mengirim surat sederhana menggunakan Admin "Email Transaksional".

Mengikuti your_form.phtml Anda

<form action="<?php echo $this->getUrl("your_module_name/index/sendEnquiry")?>" id="discuss" method="post">

//Your form 

</form>
Visa Hardik
sumber
Di direktori mana saya harus menyimpan file controller
Mouni
Anda dapat menyimpan controller di your_module / controller / IndexController.php Anda membuat kelas dan fungsinya yang relevan.
Visa Hardik
Haruskah saya perlu membuat model atau pembantu apa pun. Tolong sarankan saya, saya baru mengenal magento
Mouni
Anda dapat menambah / membuat fungsi baru dalam file modul pengontrol apa pun
Hardik Visa
Apa fungsi yang perlu saya tambahkan
Mouni
2

Coba kode ini dan sesuaikan

$email_template  = Mage::getModel('core/email_template')
    ->loadDefault($template_id);

/* load template by id */
$email_template_variables = array(
    'customer_name' => $customer_name);

$sender_email = '[email protected]';
$sender_name =  'Your Friend at The Company';                          
$email_template->setSenderName($sender_name);
$email_template->setSenderEmail($sender_email); 

$email_template->send(
    $email_to, $customer_name,$email_template_variables
);
Vivek Khandelwal
sumber
1

Untuk surat UTF-8:

$mail = new Zend_Mail('utf-8');
$mail->setFrom($senderEmail, $senderName);
$mail->addTo($toEmail, $toName);
$mail->setSubject($subject);
$mail->setBodyHTML($html); // Or plain: $mail->setBodyText($text)
$mail->send();
Sunry
sumber
0

Basic (harus bekerja dalam skrip php terpisah). Itu bekerja tanpa kecuali, tetapi saya tidak menerima email. Jadi saya menghabiskan lebih banyak waktu untuk mengatur SMTP.

// do not forget to include Mage.php before that
Mage::app();
// send email
$mail = Mage::getModel('core/email')
 ->setToEmail('<my email>')
 ->setBody('Body')
 ->setSubject('Subject:'.date("Y-m-d H:i:s"))
 ->setFromEmail('<from email>')
 ->setFromName('Magento Store Admin')
 ->setType('html');

$mail->send(); 

Prasyarat:

  1. Pengaturan surat Magento diatur ke localhost ( Sistem -> Konfigurasi -> Sistem -> Pengaturan Pengiriman Surat )

  2. Pastikan SMTP Anda berfungsi (di localhost Anda dapat memeriksa, Anda mungkin perlu menginstal telnet "yum install telnet" di CentOS)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Jika tidak berfungsi, konfigurasikan SMTP. Ada postfix yang berjalan di CentOS saya

     ps aux | grep posfix

Saya mengedit pengaturan dengan vi:

     vi /etc/postfix/main.cf

pengaturan hanya myhostname bekerja untuk saya

  1. Coba fungsi surat php:

    // The message
    $message = "Line 1\r\nLine 2\r\nLine 3";
    // Send
    $headers = 'From: <from mail>' . "\r\n" .
    'Reply-To: <from mail>' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    mail('<to mail>', 'My Subject', $message, $headers);    
    echo "<p>php mail sent 3</p>";
  2. Untuk postfix Anda dapat melihat antrian surat mengetik "mailq"

Eugene Lycenok
sumber