Як надсилати електронну пошту за допомогою Magento


16

Я створив форму з деякими полями введення в Magento. Але коли я натискаю кнопку "Надіслати", Magento не надсилатиме електронний лист.

Як я можу надіслати основний електронний лист у Magento?


Чи потрібно мені створити окремий модуль у додатку / коді / локальному / каталозі.
Муні

Чому не бути носієм англійської мови та не писати складних навчальних посібників із смішними друкарськими умовами, необхідними умовами для оволодіння Magento ???
Спенсер Вільямс

1
Немає @SpencerWilliams "Це є причина для буксирування"
Ejaz

Відповіді:


35

проста функція для надсилання електронного листа в магенто

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

Довідково


У якому каталозі мені потрібно розмістити вказаний вище код. Ви можете мені запропонувати мені.
Муні

ви можете додати у свій контролер файл, помічник чи блок, де ви хочете ..
Qaisar Satti

Я не створив жодного помічника чи моделі. Тоді як я можу це використати. Поясніть, будь ласка,
Mouni

потім додайте цю функцію у свій файл phtml та надсилайте звідти пошту ..
Qaisar Satti

Чи можу я використовувати змінну як $ mail-> setToName ($ name). Якщо вона працює.
Муні

5

Створіть форму нового шаблону "Трансакційні електронні листи".

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

Після створення нового шаблону Примітка його ідентифікатора

Створіть дію контролера

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.'));
}

Тепер ви можете відправляти просту пошту за допомогою адміністратора "Трансакційні електронні листи".

Дотримуючись вашого_form.phtml

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

//Your form 

</form>

У якому каталозі мені потрібно зберегти файл контролера
Mouni

ви можете зберегти контролер у вашому_модулі / контролері / IndexController.php для створення класу та його відповідної функції.
Hardik Visa

Якщо мені потрібно створити будь-яку модель чи помічника. Запропонуйте мені, що я новачок у Магенто
Муні

ви можете додати / створити нову функцію у будь-якому файлі контролера модуля
Hardik Visa

Яку функцію потрібно додати
Mouni

2

Спробуйте цей код і відрегулюйте його відповідно

$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

Для пошти 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

Основні (повинні працювати в окремому скрипті php). Це працювало без винятків, але я не отримував пошту. Тому я витратив більше часу на налаштування 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(); 

Передумови:

  1. Налаштування електронної пошти Magento встановлено як localhost ( Система -> Конфігурація -> Система -> Налаштування відправки пошти )

  2. Переконайтеся, що ваш SMTP працює (на localhost ви можете перевірити, можливо, вам доведеться встановити telnet "yum install telnet" на CentOS)

    telnet localhost 25
    MAIL FROM: <put from mail>
    RCPT TO: <put to mail>
    data: 
    Subject: <put your subject>
    <Put body here>
    . 
    QUIT
  3. Якщо він не працює, налаштуйте SMTP. На моєму CentOS працював постфікс

     ps aux | grep posfix

Я редагував налаштування за допомогою vi:

     vi /etc/postfix/main.cf

встановлення просто myhostname працювало на мене

  1. Спробуйте функцію електронної пошти:

    // 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. Для постфіксу ви можете переглянути поштову чергу, набравши "mailq"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.