Como enviar email usando o Magento

16

Eu criei um formulário com alguns campos de entrada no Magento. Mas quando clico em enviar, o Magento não envia o email.

Como posso enviar um email básico no Magento?

Mouni
fonte
Devo precisar criar um módulo separado no diretório app / code / local /.
Mouni
Por que não ser um falante nativo de inglês e escrever tutoriais elaborados com pré-requisitos de erros de digitação ridículos para dominar o Magento ???
Spencer Williams
1
Não @SpencerWilliams "Tem duas razões"
Ejaz

Respostas:

35

função simples para enviar o email no 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('');
        }
    }
?>

Referência

Qaisar Satti
fonte
Em qual diretório eu preciso colocar o código acima. Você pode me sugerir.
Mouni
você pode adicionar em seu arquivo de controlador, ajudante ou bloco onde você quiser ..
Qaisar Satti
Eu não tinha criado qualquer ajudante ou modelo, então como posso usar it.Please explicar
Mouni
em seguida, adicione esta função no seu arquivo phtml e enviar e-mails a partir de lá ..
Qaisar Satti
Posso usar a variável como $ mail-> setToName ($ name) .É isso funciona.
Mouni
5

Crie novo formulário de modelo "Emails transacionais".

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

Depois de criar um novo modelo, observe seu ID

Criar ação do 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.'));
}

Agora você pode enviar e-mails simples usando Admin "Emails Transacionais".

Seguindo seu your_form.phtml

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

//Your form 

</form>
Hardik Visa
fonte
Em qual diretório eu preciso salvar o arquivo do controlador
Mouni
você pode salvar o controlador em sua classe de criação your_module / controller / IndexController.php e sua função relevante.
Hardik Visa
Eu preciso criar qualquer modelo ou auxiliar.Por favor, sugira que eu sou novo no magento
Mouni
você pode adicionar / criar nova função em qualquer arquivo do controlador de módulo
Hardik Visa
Que função eu preciso adicionar
Mouni
2

Experimente este código e ajuste-o de acordo

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

Para correio 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
fonte
0

Básico (deve funcionar em um script php separado). Funcionou sem exceções, mas não recebi correio. Então, passei mais tempo configurando o 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(); 

Pré-requisitos:

  1. As configurações de email do Magento são definidas como host local ( Sistema -> Configuração -> Sistema -> Configurações de envio de email )

  2. Verifique se o seu SMTP está funcionando (no host local você pode verificar, pode ser necessário instalar o telnet "yum install telnet" no CentOS)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Se não estiver funcionando, configure o SMTP. Havia postfix em execução no meu CentOS

     ps aux | grep posfix

Editei as configurações com o vi:

     vi /etc/postfix/main.cf

definindo apenas myhostname funcionou para mim

  1. Tente a função php mail:

    // 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 o postfix, você pode visualizar a fila de email digitando "mailq"

Eugene Lycenok
fonte