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?


¿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


¿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>

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 = '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

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

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"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.