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?


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


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>

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

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"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.