Ответ пользователю на почту через reply_to
Приветствую сообщество!
Достался сайт на modx revolution с miniShop2, никогда раньше с ними дела не имел, да и вообще в программировании не силён, поэтому разбираюсь по «бразильской системе» :)
При заказе манагеру приходит письмо с почты order@мойдомен,
в теле письма приходят данные покупателя, с которым предстоит дальнейшая переписка по заказу.
Можно ли как-то (я почти уверен, что можно) сделать, чтобы в письме приходящем манагеру, в поле reply_to уже стоял email пользователя, который он указал при заказе?
Достался сайт на modx revolution с miniShop2, никогда раньше с ними дела не имел, да и вообще в программировании не силён, поэтому разбираюсь по «бразильской системе» :)
При заказе манагеру приходит письмо с почты order@мойдомен,
в теле письма приходят данные покупателя, с которым предстоит дальнейшая переписка по заказу.
Можно ли как-то (я почти уверен, что можно) сделать, чтобы в письме приходящем манагеру, в поле reply_to уже стоял email пользователя, который он указал при заказе?
Комментарии: 5
Когда-то «костылили» (что нехорошо конечно) так: в файле core/components/minishop2/model/minishop2/minishop2.class.php
1. правился метод sendEmail, добавлялся параметр $reply_to:
1. правился метод sendEmail, добавлялся параметр $reply_to:
public function sendEmail($email, $subject, $body = '', $replyto = '')
{
$this->modx->getParser()->processElementTags('', $body, true, false, '[[', ']]', array(), 10);
$this->modx->getParser()->processElementTags('', $body, true, true, '[[', ']]', array(), 10);
/** @var modPHPMailer $mail */
$mail = $this->modx->getService('mail', 'mail.modPHPMailer');
$mail->setHTML(true);
$mail->address('to', trim($email));
if($replyto){
$mail->address('reply-to', trim($replyto));
}
$mail->set(modMail::MAIL_SUBJECT, trim($subject));
$mail->set(modMail::MAIL_BODY, $body);
$mail->set(modMail::MAIL_FROM, $this->modx->getOption('emailsender'));
$mail->set(modMail::MAIL_FROM_NAME, $this->modx->getOption('site_name'));
if (!$mail->send()) {
$this->modx->log(modX::LOG_LEVEL_ERROR,
'An error occurred while trying to send the email: ' . $mail->mailer->ErrorInfo
);
}
$mail->reset();
}
2. правился метод changeOrderStatus, вот этот фрагмент с добавлением reply_to:if ($status->get('email_manager')) {
$subject = $this->pdoTools->getChunk('@INLINE ' . $status->get('subject_manager'), $pls);
$tpl = '';
if ($chunk = $this->modx->getObject('modChunk', array('id' => $status->get('body_manager')))) {
$tpl = $chunk->get('name');
}
$body = $this->modx->runSnippet('msGetOrder', array_merge($pls, array('tpl' => $tpl)));
$emails = array_map('trim', explode(',',
$this->modx->getOption('ms2_email_manager', null, $this->modx->getOption('emailsender')))
);
if (!empty($subject)) {
// здесь изменения!!
$profile = $this->modx->getObject('modUserProfile', array('internalKey' => $pls['user_id']));
$replyto = $profile->get('email');
foreach ($emails as $email) {
if (preg_match('#.*?@.*#', $email)) {
$this->sendEmail($email, $subject, $body, $replyto);
}
}
}
}
P.S. Видимо пора уже это в issue оформить, сделаю.
Спасибо! сейчас попробую закостылить ))
Костылить — не гуд, нужно переопределять, иначе первое же обновление minishop все эти изменения затрёт! А issue создал: github.com/Ibochkarev/miniShop2/issues/597
Не подскажете, есть ли способ переопределить эти методы minishop2.class? Про переопределение методов msorderhandler видел, а про minishop2.class не нашел
ДА! СПАСИБО!!! Работает!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.