Cómo enviar correos electrónicos usando Magento

16

He creado un formulario con algunos campos de entrada en Magento. Pero cuando hago clic en enviar, Magento no enviará el correo electrónico.

¿Cómo puedo enviar un correo electrónico básico en Magento?

Mouni
fuente
¿Debo crear un módulo separado en el directorio app / code / local /?
Mouni
¿Por qué no ser un hablante nativo de inglés y escribir tutoriales elaborados con prerrequisitos de errores tipográficos ridículos para el dominio de Magento?
Spencer Williams el
1
No @SpencerWilliams "Tiene razón para remolcar"
Ejaz

Respuestas:

35

función simple para enviar el correo electrónico en 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('');
        }
    }
?>

Referencia

Qaisar Satti
fuente
¿En qué directorio debo colocar el código anterior? ¿Puede sugerirme?
Mouni
puede agregar en su archivo controlador, ayudante o bloquear donde lo desee ..
Qaisar Satti
No había creado ningún ayudante o modelo, entonces, ¿cómo puedo usarlo? Por favor explique
Mouni
luego agregue esta función en su archivo phtml y envíe un correo desde allí ..
Qaisar Satti
¿Puedo usar la variable como $ mail-> setToName ($ name)? Funciona.
Mouni
5

Crear nuevo formulario de plantilla "Correos electrónicos transaccionales".

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

Después de crear una nueva plantilla, tenga en cuenta su ID

Crear acción del controlador

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

Ahora puede enviar un correo simple usando el administrador "Correos electrónicos transaccionales"

Siguiendo Your your_form.phtml

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

//Your form 

</form>
Visa Hardik
fuente
En qué directorio necesito guardar el archivo del controlador
Mouni
puede guardar el controlador en su clase de creación your_module / controller / IndexController.php y su función relevante.
Visa Hardik
Si necesito crear algún modelo o ayudante, sugiérame que soy nuevo en magento
Mouni
puede agregar / crear una nueva función en cualquier archivo de controlador de módulo
Hardik Visa
Qué función necesito agregar
Mouni
2

Pruebe este código y ajústelo en consecuencia

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

Para correo 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
fuente
0

Básico (debería funcionar en un script php separado). Funcionó sin excepciones, pero no recibí correo. Así que pasé más tiempo configurando el 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(); 

Prerrequisitos:

  1. La configuración de correo de Magento se establece en localhost ( Sistema -> Configuración -> Sistema -> Configuración de envío de correo )

  2. Asegúrese de que su SMTP funciona (en localhost puede verificar, es posible que necesite instalar telnet "yum install telnet" en 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 no funciona, configure SMTP. Hubo postfix ejecutándose en mi CentOS

     ps aux | grep posfix

Edité la configuración con vi:

     vi /etc/postfix/main.cf

configurar solo mi nombre de host funcionó para mí

  1. Prueba la función de correo 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. Para postfix puedes ver la cola de correo escribiendo "mailq"

Eugene Lycenok
fuente