Программная отправка электронной почты в Magento не удалась - PullRequest
0 голосов
/ 08 апреля 2011

Почему в настройках конфигурации / системы / отправки почты нигде не указано имя пользователя и пароль для вашего сервера smtp?

Чтобы обойти это, нужно внести изменения в getMail ()изложено в этом сообщении: http://www.magentocommerce.com/boards/viewthread/1073/P30/

Я хочу сделать что-то очень простое:
- создать шаблон электронной почты
- не нужно ссылаться на этот шаблон в каких-либо конфигурационных файлах.
- программно отправить электронное письмо с использованием шаблона, определенного выше
- указать значения для замены любых тегов в шаблоне
- указать адрес электронной почты получателя
- указать другие биты, например, адрес отправителя

Итак, первый шаг - создайте шаблон.
- В Confguration / Transactional Emails я полагаю, что должен увидеть список шаблонов.Я ничего не вижу.Но если я добавлю новый шаблон, я могу выбрать из списка шаблонов.
- дать шаблону имя «Боб».
- добавить несколько шаблонов в шаблон:
myvar1 = {{varmyvar1}}
myvar2 = {{var myvar2}}
- сохранить шаблон;ему присваивается идентификатор 1.

Теперь отправьте электронное письмо программно из действия контроллера:
- Нет необходимости вносить изменения в LINEEND в Mime.php, поскольку он уже установлен на \ n вверсия 1.4.2.0
- внести изменения в getMail () в Template.php, как указано в этом сообщении: http://www.magentocommerce.com/boards/viewthread/1073/P30/
- написать код в действии контроллера для отправки электронной почты:

    This returns nothing:  
    $emailTemplate  = Mage::getModel('core/email_template')->loadDefault('no matter what goes here emailTemplate is not set');

    This does return an email template:
    $emailTemplate  = Mage::getModel('core/email_template')->loadByCode('Bob');

    but the call to send below fails:
    $emailTemplate->setSenderEmail('sent@byme.com');
    $emailTemplate->setSenderName('Steve');
    $emailTemplateVariables = array();
    $emailTemplateVariables['myvar1'] = 'TestValue1';
    $emailTemplateVariables['myvar2'] = 'TestValue2';
    // $processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables); -- this returns nothing
    $emailTemplate->send('thisisme@mydomain.com','John', $emailTemplateVariables);
In the system.log I get the warning below, and no e-mail ever arrives.
Warning: stream_socket_enable_crypto() [<a href='streams.crypto'>streams.crypto</a>]: this stream does not support SSL/crypto  in C:\Applications\Apache Software Foundation\Apache2.2\htdocs\magento\lib\Zend\Mail\Protocol\Smtp.php on line 206

Должен ли я использовать loadByCode?Хотелось бы, чтобы была какая-то стоящая документация (справка для loadByCode - «Загрузить шаблон по коду» !!).Должен ли я использовать send, sendTransactional?Ох за немного качественной документации.

Спасибо

Ответы [ 3 ]

5 голосов
/ 05 мая 2011

Здесь я вижу 2 вопроса.

1. Как настроить почтовую систему Magento для использования протокола SMTP?

У вас проблемы с этим, потому что Magento настроен на использование почтовой рассылки по умолчанию. Поэтому он будет искать его на компьютере, на котором он установлен.

Если вы хотите настроить SMTP-сервер, я бы рекомендовал использовать это расширение: http://www.magentocommerce.com/magento-connect/ziq2004/extension/460/advanced-smtp--artson.it

Я нашел, что его легко использовать и настраивать.

2. Как отправить письмо в свой пользовательский модуль

Вы можете сначала создать свой шаблон в Confguration / Transactional Emails, отметьте Id для него будет ваш идентификатор

Затем просто используйте этот код для отправки почты в ваш модуль

<?php
// The Id you just marked...
$templateId = 1;

// Define the sender, here we query Magento default email (in the configuration)
// For customer support email, use : 'trans_email/ident_support/...'
$sender = Array('name' => Mage::getStoreConfig('trans_email/ident_general/name'),
                'email' => Mage::getStoreConfig('trans_email/ident_general/email'));

// Set you store
// This information may be taken from the current logged in user
$store = Mage::app()->getStore();

// In this array, you set the variables you use in your template
$vars = Array('my_var' => $my_var,
              'another_var' => 12);

// You don't care about this...        
$translate  = Mage::getSingleton('core/translate');

// Send your email
Mage::getModel('core/email_template')->sendTransactional($templateId,
                                                         $sender,
                                                         'recipient@gmail.com',
                                                         'Recipient Name',
                                                         $vars,
                                                         $store->getId());

// You don't care as well        
$translate->setTranslateInline(true);
?>

Надеюсь, это поможет вам

С уважением,

0 голосов
/ 05 октября 2015

Если кто-то ищет полный пример кода для отправки электронного письма Magento на основе существующего шаблона электронного письма Magento, то хорошо работает следующее.Не требует никаких настроек XML.Вы можете загрузить шаблон как по имени, так и по идентификатору.В этом случае я загружаю его по имени.

// This is the name that you gave to the template in System -> Transactional Emails
$emailTemplate = Mage::getModel('core/email_template')->loadByCode('My Custom Email Template');

// These variables can be used in the template file by doing {{ var some_custom_variable }}
$emailTemplateVariables = array(
'some_custom_variable' => 'Hello World'
);

$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);

$emailTemplate->setSenderName('Joe Bloggs');
$emailTemplate->setSenderEmail('test@test.com');
$emailTemplate->setTemplateSubject("Here is your subject");

$emailTemplate->send('recipient@test.com', 'Joanna Bloggs', $emailTemplateVariables);
0 голосов
/ 08 апреля 2011

Я вынул элемент 'ssl' => 'tls' из массива в getMail () в Template.php, и моя электронная почта пришла.Я все еще был бы признателен, если бы у кого-нибудь было объяснение того, как следует указывать имя пользователя и пароль сервера smtp, а также объяснение различий в методах загрузки шаблонов и т. Д.!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...