Tôi đã tạo một biểu mẫu với một số trường đầu vào trong Magento. Nhưng khi tôi nhấp vào gửi, Magento sẽ không gửi email.
Làm cách nào tôi có thể gửi email cơ bản trong Magento?
Tôi đã tạo một biểu mẫu với một số trường đầu vào trong Magento. Nhưng khi tôi nhấp vào gửi, Magento sẽ không gửi email.
Làm cách nào tôi có thể gửi email cơ bản trong Magento?
Câu trả lời:
chức năng đơn giản để gửi email trong 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('');
}
}
?>
Tạo mẫu mới "Email giao dịch".
hello {{var customerName}},
You received test template.
Thank you
Sau khi tạo Mẫu mới Lưu ý ID của nó
Tạo hành động điều khiển
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.'));
}
Bây giờ bạn có thể gửi thư đơn giản bằng cách sử dụng "Email giao dịch" của quản trị viên.
Theo dõi your_form.phtml của bạn
<form action="<?php echo $this->getUrl("your_module_name/index/sendEnquiry")?>" id="discuss" method="post">
//Your form
</form>
Hãy thử mã này và điều chỉnh nó cho phù hợp
$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
);
Basic (nên hoạt động trong một tập lệnh php riêng). Nó hoạt động mà không có ngoại lệ, nhưng tôi không nhận được thư. Vì vậy, tôi đã dành nhiều thời gian hơn để thiết lập 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();
Điều kiện tiên quyết:
Cài đặt thư Magento được đặt thành localhost ( Hệ thống -> Cấu hình -> Hệ thống -> Cài đặt gửi thư )
Đảm bảo rằng SMTP của bạn hoạt động (trên localhost mà bạn có thể kiểm tra, bạn có thể cần cài đặt telnet "yum install telnet" trên CentOS)
telnet localhost 25
MAIL FROM: <put from mail>
RCPT TO: <put to mail>
data:
Subject: <put your subject>
<Put body here>
.
QUIT
Nếu nó không hoạt động cấu hình SMTP. Có postfix chạy trên CentOS của tôi
ps aux | grep posfix
Tôi đã chỉnh sửa cài đặt bằng vi:
vi /etc/postfix/main.cf
chỉ thiết lập myhostname cho tôi
Hãy thử chức năng thư 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>";
Đối với postfix, bạn có thể xem hàng đợi thư gõ "mailq"