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?
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?
Respuestas:
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('');
}
}
?>
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>
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
);
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:
La configuración de correo de Magento se establece en localhost ( Sistema -> Configuración -> Sistema -> Configuración de envío de correo )
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
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í
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>";
Para postfix puedes ver la cola de correo escribiendo "mailq"