Перейти к содержимому


Письмо с заказом


  • Вы не можете ответить в тему
Сообщений в теме: 14

#1 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 05 September 2016 - 01:24 PM

Добрый день.
Сейчас письма с заказами приходят в html формате.
Скажите, возможно ли изменить формат на текстовый?

Отправляю заказы с почты в битрикс24, но текст заказа не обрабатывается битриксом.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 05 September 2016 - 04:28 PM

Сейчас письма с заказами приходят в html формате.
Скажите, возможно ли изменить формат на текстовый?

Да. Не делал, но это не сложно.
Как я понимаю, надо:
1. в соответствующей функции отправки емейла с заказом надо заменить $mail->IsHTML(true) на false.
2. преобразовать шаблон емейла с заказом из HTML-кода в обычный текст, т.е. заменить <br> на перенос строки и прочее.
В принципе, можно использовать PHP-функцию strip_tags, которая автоматически убирает все HTML-тэги из текста.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 07:35 AM

Если не сложно, подскажите какие файлы смотреть, чтоб не перебирать всю систему.
Спасибо.

В functions.php менял в двух местах, не сработало.

Также нашел в class.phpmailer.php функцию

  function IsHTML($bool) {
    if($bool == true) {
	  $this->ContentType = 'text/html';
    } else {
	  $this->ContentType = 'text/plain';
    }
  }

  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 September 2016 - 09:44 AM

email отсылается в файле order_functions.php в функции _sendOrderNotifycationToAdmin используя функцию xMailTxtHTMLDATA.
Функция xMailTxtHTMLDATA находится в файле functions.php.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 09:51 AM

Заменил $mail->IsHTML(true) на false в functions.php
Почистил кэш.
Письма вообще не приходят.
  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 September 2016 - 10:00 AM

Значит, надо разбираться, почему так происходит. Эта замена ничего не делает кроме изменения заголовка в письме, который сообщает почтовой программе "письмо в HTML" или "письмо в обычном тексте" (text/html или text/plain).
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 10:23 AM

Буду разбираться.
Спасибо.
  • 0

#8 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 11:46 AM

Махнул не глядя в class.phpmailer.php text/html на text/plain и заработало.
Прошу подсказать, если возможно по замене e-mail "Email для отправки уведомлений о заказах" на e-mail клиента.
Возможно ли это сделать?
  • 0

#9 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 September 2016 - 01:18 PM

Махнул не глядя в class.phpmailer.php text/html на text/plain и заработало.

И теперь ВСЕ email всем получателям приходят в тексте. Даже те, которые на самом деле в HTML.

Прошу подсказать, если возможно по замене e-mail "Email для отправки уведомлений о заказах" на e-mail клиента.

Клиент и так получает практически такое же уведомление, зачем ему получать еще одно вместо админа?
Разница в уведомлениях о заказе клиента и админа только в разных шаблонах уведомления.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#10 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 01:35 PM

Махнул не глядя в class.phpmailer.php text/html на text/plain и заработало.

И теперь ВСЕ email всем получателям приходят в тексте. Даже те, которые на самом деле в HTML.

Прошу подсказать, если возможно по замене e-mail "Email для отправки уведомлений о заказах" на e-mail клиента.

Клиент и так получает практически такое же уведомление, зачем ему получать еще одно вместо админа?
Разница в уведомлениях о заказе клиента и админа только в разных шаблонах уведомления.


Письмо, которое приходит админу о поступившем заказе.
В нем я хочу поменять e-mail на e-mail клиента.
Чтобы получались письма с разных почтовых ящиков, а не с одного.
Нужно это для того, чтобы создавать новые лиды в битрикс24.

--------------

Все письма приходят в тексте... да, посмотрел и вернул обратно.
  • 0

#11 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 03:01 PM

В functions.php меняю получателя - не срабатывает
  function xMailTxtHTMLDATA($_Email, $_Subject, $_Text, $castmail = CUSTOMER_EMAIL, $castname = CONF_SHOP_NAME)
  {
	  if (!$_Email) return 0;
	  include_once ("core/classes/class.phpmailer.php");
	  $mail = new PHPMailer();
	  if (!CONF_MAIL_METHOD) $mail->IsSMTP();
	  else  $mail->IsMail();
	  $mail->Host = CONF_MAIL_HOST;
	  $mail->Username = CONF_MAIL_LOGIN;
	  $mail->Password = CONF_MAIL_PASS;
	  $mail->SMTPAuth = true;
	  $mail->From = $castmail;
	  $mail->FromName = $castname;
	  $mail->CharSet = DEFAULT_CHARSET;
	  $mail->Encoding = "8bit";
	  $mail->SetLanguage("ru");
	  $mail->AddReplyTo($castmail, $castname);
	  $mail->IsHTML(true);
	  $mail->Subject = $_Subject;
	  $mail->Body = $_Text;
	  $mail->AltBody = ERROR_NO_TEXT_IN_MAILDATA;
	  if (preg_match("/^[_\.a-z0-9-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is",
		  $_Email))
	  {
		  $mail->ClearAddresses();
		  $mail->AddAddress($_Email, '');
		  return $mail->Send();
	  }
	  else  return false;
  }

  • 0

#12 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 September 2016 - 03:08 PM

В functions.php меняю получателя - не срабатывает

Насколько я помню, это какой-то таракан используемой версии библиотеки PHPmailer.
Что-то там не так с полем From (письмо приходит не от from, а от некого технического адреса).
Но не разбирался.
На форуме есть невнятные рецепты лечения.
Самый понятный - сменить версию библиотеки на более современную.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#13 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 06 September 2016 - 03:42 PM

Обновил PHPmailer до 5.2.16, один хрен не работает.
Ставит тех адрес сервера.
Жопа вообще какая то... <_< :blink:
  • 0

#14 spot

    Пользователь

  • Download User
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий
  • ГородНижний Новгород

Отправлено 07 September 2016 - 09:35 AM

Уважаемые форумчане!
Кто нибудь сталкивался с таким вопросом?
Буду благодарен за пинки в разные стороны!

--------------------------

Кто возьмется за вознаграждение решить данный вопрос?
  • 0

#15 namer

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 45 сообщений
Репутация: 16
Начинающий
  • ГородКрасноярск

Отправлено 29 September 2016 - 10:42 AM

1) Для отправки в текстовом формате достаточно использовать вместо функции xMailTxtHTMLDATA
функцию xMailTxtHTML
2)
/**
   * Sets the Sender email (Return-Path) of the message.  If not empty,
   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
   * @var string
   */
  var $Sender            = '';
Т.о. в функции xMailTxtHTML после создания экземпляра
$mail = new PHPMailer();
добавить
$mail->Sender = 'you_mail_from';

  • 0
Установка, настройка
доработка функционала
Изображение