Magento kullanarak e-posta gönderme


16

Magento'da bazı girdi alanları olan bir form oluşturdum. Ancak gönder'i tıkladığımda Magento e-postayı göndermeyecek.

Magento'da nasıl temel bir e-posta gönderebilirim?


App / code / local / dizininde ayrı bir modül oluşturmam gerekiyor mu?
Mouni

Neden ana dili İngilizce olan biri değil ve Magento'nun ustalığı için saçma yazım kuralları olan ayrıntılı dersler yazıyor?
Spencer Williams

1
Hayır @SpencerWilliams "Çekme nedeni var"
Ejaz

Yanıtlar:


35

magento e-posta göndermek için basit bir işlev

<?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('');
        }
    }
?>

Referans


Yukarıdaki kodu hangi dizine yerleştirmeliyim.Lütfen bana önerebilir misiniz?
Mouni

denetleyici dosyanıza, yardımcı veya bloğunuza istediğiniz yere ekleyebilirsiniz ..
Qaisar Satti

Ben herhangi bir yardımcı veya model yarattı olmasaydı, O zaman nasıl it.please açıklamak kullanabilirsiniz
Mouni

sonra bu fonksiyonu phtml dosyanıza ekleyin ve oradan posta gönderin ..
Qaisar Satti

Değişkeni $ mail-> setToName ($ name) olarak kullanabilir miyim?
Mouni

5

Yeni İşlem Formu "İşlem E-postaları" oluşturun.

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

Yeni Şablon oluşturduktan sonra kimliği

Denetleyici eylemi oluştur

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.'));
}

Artık Yönetici "İşlem E-postaları" nı kullanarak basit postalar gönderebilirsiniz.

Your_form.phtml sayfanızı Takip Edin

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

//Your form 

</form>

Hangi dizinde kontrolör dosyasını kaydetmem gerekiyor
Mouni

denetleyicinizi modülünüze / denetleyicinize / IndexController.php create sınıfınıza ve ilgili işlevine kaydedebilirsiniz.
Hardik Visa

Ben herhangi bir model veya helper.Please oluşturmak için gerekirse ben magento yeni am beni önermek
Mouni

herhangi bir modül denetleyici dosyasına yeni işlev ekleyebilir / oluşturabilirsiniz
Hardik Visa

Hangi işlevi eklemem gerekiyor
Mouni

2

Bu kodu deneyin ve uygun şekilde ayarlayın

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

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

$sender_email = 'Info@yourCompany.com';
$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
);

1

UTF-8 postaları için:

$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();

0

Temel (ayrı bir php betiğinde çalışmalıdır). İstisnasız çalıştı, ancak posta almadım. Bu yüzden SMTP'yi ayarlamak için daha fazla zaman harcadım.

// 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(); 

Ön şartlar:

  1. Magento posta ayarları localhost olarak ayarlandı ( Sistem -> Yapılandırma -> Sistem -> Posta Gönderme Ayarları )

  2. SMTP'nizin çalıştığından emin olun (kontrol edebileceğiniz localhost üzerinde, CentOS'a telnet "yum install telnet" yüklemeniz gerekebilir)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Çalışmıyorsa SMTP'yi yapılandırın. CentOS'umda postfix çalışıyor

     ps aux | grep posfix

Ayarları vi ile düzenledim:

     vi /etc/postfix/main.cf

sadece myhostname ayarlaması benim için çalıştı

  1. Php posta işlevini deneyin:

    // 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. Postfix için "mailq" yazarak posta sırasını görüntüleyebilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.