Jak wysłać wiadomość e-mail za pomocą Magento

16

Utworzyłem formularz z niektórymi polami wejściowymi w Magento. Ale kiedy kliknę przycisk Prześlij, Magento nie wyśle ​​e-maila.

Jak mogę wysłać podstawowy e-mail w Magento?

Mouni
źródło
Czy powinienem utworzyć osobny moduł w katalogu app / code / local /.
Mouni,
Dlaczego nie jest rodzimym językiem angielskim i pisze skomplikowane samouczki z absurdalnymi literówkami, niezbędne do opanowania Magento ???
Spencer Williams,
1
Nie @SpencerWilliams „Ma przyczynę holowania”
Ejaz

Odpowiedzi:

35

prosta funkcja wysyłania wiadomości e-mail w 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('');
        }
    }
?>

Odniesienie

Qaisar Satti
źródło
W którym katalogu powinienem umieścić powyższy kod. Czy możesz mi zasugerować.
Mouni,
możesz dodać plik kontrolera, pomocnika lub blok tam, gdzie chcesz.
Qaisar Satti
Nie stworzyłem żadnego pomocnika ani modelu, więc jak mogę go użyć. Proszę wyjaśnić
Mouni,
następnie dodaj tę funkcję do pliku phtml i stamtąd wyślij pocztę ..
Qaisar Satti
Czy mogę użyć zmiennej jako $ mail-> setToName ($ name). Czy to działa?
Mouni,
5

Utwórz nowy szablon formularza „Transakcyjne wiadomości e-mail”.

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

Po utworzeniu nowego szablonu zanotuj jego identyfikator

Utwórz akcję kontrolera

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

Teraz możesz wysyłać proste wiadomości e-mail za pomocą Administracyjnych „e-maili transakcyjnych”.

Podążając za twoim your_form.phtml

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

//Your form 

</form>
Visa Hardik
źródło
W którym katalogu muszę zapisać plik kontrolera
Mouni
możesz zapisać kontroler w swoim module / kontroler / IndexController.php stworzyć klasę i jej odpowiednią funkcję.
Hardik Visa,
Czy powinienem stworzyć model lub pomocnika? Proszę zasugerować, że jestem nowy w Magento
Mouni
możesz dodać / utworzyć nową funkcję w dowolnym pliku kontrolera modułu
Hardik Visa
Jaką funkcję muszę dodać
Mouni,
2

Wypróbuj ten kod i odpowiednio go dostosuj

$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
źródło
1

W przypadku poczty 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
źródło
0

Podstawowy (powinien działać w osobnym skrypcie php). Działało bez wyjątków, ale nie otrzymałem poczty. Więc spędziłem więcej czasu na ustawianiu 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(); 

Wymagania wstępne:

  1. Ustawienia poczty Magento ustawione na localhost ( System -> Konfiguracja -> System -> Ustawienia wysyłania poczty )

  2. Upewnij się, że twój SMTP działa (na localhost możesz sprawdzić, być może będziesz musiał zainstalować telnet „yum install telnet” na CentOS)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Jeśli to nie działa, skonfiguruj SMTP. Na moim CentOSie działał postfiks

     ps aux | grep posfix

Edytowałem ustawienia za pomocą vi:

     vi /etc/postfix/main.cf

ustawienie tylko moja_hosta działało dla mnie

  1. Wypróbuj funkcję poczty 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. W przypadku Postfiksa możesz wyświetlić kolejkę pocztową, wpisując „mailq”

Eugene Lycenok
źródło