So senden Sie E-Mails mit Magento

16

Ich habe in Magento ein Formular mit einigen Eingabefeldern erstellt. Wenn ich jedoch auf "Senden" klicke, sendet Magento die E-Mail nicht.

Wie kann ich in Magento eine einfache E-Mail senden?

Mouni
quelle
Muss ich ein separates Modul in app / code / local / directory erstellen?
Mouni
Warum ist es nicht eine englische Muttersprache, aufwendige Tutorials mit lächerlichen Tippfehlern zu schreiben, um Magento zu beherrschen?
Spencer Williams
1
Nein @SpencerWilliams "Es hat zwei Gründe"
Ejaz

Antworten:

35

einfache funktion um die email in magento zu versenden

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

Referenz

Qaisar Satti
quelle
In welchem ​​Verzeichnis soll ich den obigen Code ablegen müssen. Kannst du mich bitte vorschlagen?
Mouni
Sie können in Ihre Controller-Datei, Helfer oder Block hinzufügen, wo Sie es wollen ..
Qaisar Satti
Ich hatte keinen Helfer oder Modell erstellt. Wie kann ich es dann verwenden? Bitte erklären Sie
Mouni
Fügen Sie diese Funktion in Ihre HTML-Datei ein und senden Sie von dort aus eine E-Mail.
Qaisar Satti
Kann ich Variable als $ mail-> setToName ($ name) verwenden. Funktioniert es?
Mouni
5

Erstellen Sie ein neues Vorlagenformular "Transaktions-E-Mails".

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

Nach dem Erstellen einer neuen Vorlage die ID notieren

Erstellen Sie eine Controller-Aktion

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

Jetzt können Sie einfache E-Mails mit Admin "Transactional Emails" senden.

Folgen Sie Ihrer_form.phtml

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

//Your form 

</form>
Hardik Visa
quelle
In welchem ​​Verzeichnis muss ich die Controller-Datei speichern
Mouni
Sie können den Controller in Ihrer Klasse your_module / controller / IndexController.php create und deren relevanter Funktion speichern.
Hardik Visa
Sollte es notwendig sein, ein Modell oder einen Helfer zu erstellen. Bitte schlagen Sie mir vor, dass ich neu bei magento
Mouni
Sie können neue Funktionen in jeder Modul-Controller-Datei hinzufügen / erstellen
Hardik Visa
Welche Funktion muss ich hinzufügen
Mouni
2

Probieren Sie diesen Code aus und passen Sie ihn entsprechend an

$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
quelle
1

Für UTF-8-Mail:

$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
quelle
0

Basic (sollte in einem separaten PHP-Skript funktionieren). Es hat ausnahmslos funktioniert, aber ich habe keine Mail erhalten. Also habe ich mehr Zeit mit dem Einstellen des SMTP verbracht.

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

Voraussetzungen:

  1. Die Magento Mail Einstellungen sind auf localhost gesetzt ( System -> Konfiguration -> System -> Mail Sending Einstellungen )

  2. Stellen Sie sicher, dass Ihr SMTP funktioniert (auf localhost können Sie überprüfen, dass Sie möglicherweise telnet "yum install telnet" unter CentOS installieren müssen)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Wenn es nicht funktioniert, konfigurieren Sie SMTP. Auf meinem CentOS lief Postfix

     ps aux | grep posfix

Ich habe die Einstellungen mit vi bearbeitet:

     vi /etc/postfix/main.cf

Die Einstellung nur myhostname hat bei mir funktioniert

  1. Probieren Sie die PHP-Mail-Funktion aus:

    // 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. Für Postfix können Sie die Mail-Warteschlange anzeigen, indem Sie "mailq" eingeben.

Eugene Lycenok
quelle