Comment envoyer des e-mails avec Magento


16

J'ai créé un formulaire avec des champs de saisie dans Magento. Mais lorsque je clique sur soumettre, Magento n'enverra pas l'e-mail.

Comment envoyer un e-mail de base dans Magento?


Dois-je avoir besoin de créer un module séparé dans le répertoire app / code / local /.
Mouni

Pourquoi ne pas être un anglophone natif et écrire des tutoriels élaborés avec des prérequis ridicules pour la maîtrise de Magento ???
Spencer Williams

1
No @SpencerWilliams "Il a une raison de remorquer"
Ejaz

Réponses:


35

fonction simple pour envoyer l'e-mail dans 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('');
        }
    }
?>

Référence


Dans quel répertoire dois-je placer le code ci-dessus, pouvez-vous me suggérer.
Mouni

vous pouvez ajouter dans votre fichier de contrôleur, aide ou bloc où vous le souhaitez ..
Qaisar Satti

Je n'avais pas créé d'aide ou de modèle, alors comment puis-je l'utiliser.Veuillez expliquer
Mouni

puis ajoutez cette fonction dans votre fichier phtml et envoyez des courriels à partir de là ..
Qaisar Satti

Puis-je utiliser une variable comme $ mail-> setToName ($ name) .Est-ce que cela fonctionne?
Mouni

5

Créez un nouveau modèle de formulaire "Emails transactionnels".

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

Après avoir créé un nouveau modèle, notez son ID

Créer une action de contrôleur

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

Vous pouvez maintenant envoyer des courriers électroniques simples à l'aide d'Admin "Transactional Emails".

Suivre votre your_form.phtml

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

//Your form 

</form>

Dans quel répertoire je dois enregistrer le fichier du contrôleur
Mouni

vous pouvez enregistrer le contrôleur dans votre classe create your_module / controller / IndexController.php et sa fonction correspondante.
Visa Hardik du

Devrais-je avoir besoin de créer un modèle ou un assistant? Veuillez me suggérer que je suis nouveau sur magento
Mouni

vous pouvez ajouter / créer une nouvelle fonction dans n'importe quel fichier de contrôleur de module
Hardik Visa

Quelle fonction je dois ajouter
Mouni

2

Essayez ce code et ajustez-le en conséquence

$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

Pour le courrier 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();

0

De base (devrait fonctionner dans un script php séparé). Cela a fonctionné sans exception, mais je n'ai pas reçu de courrier. J'ai donc passé plus de temps à configurer le 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(); 

Conditions préalables:

  1. Les paramètres de messagerie Magento définis sur localhost ( Système -> Configuration -> Système -> Paramètres d'envoi de courrier )

  2. Assurez-vous que votre SMTP fonctionne (sur localhost vous pouvez vérifier, vous devrez peut-être installer telnet "yum install telnet" sur CentOS)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Si cela ne fonctionne pas, configurez SMTP. Il y avait un suffixe en cours d'exécution sur mon CentOS

     ps aux | grep posfix

J'ai édité les paramètres avec vi:

     vi /etc/postfix/main.cf

mettre juste mon nom d'hôte a fonctionné pour moi

  1. Essayez la fonction de messagerie 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. Pour postfix, vous pouvez afficher la file d'attente de messagerie en tapant "mailq"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.