Перейти к содержанию
Форум поддержки пользователей VamShop

Ошибка при быстром заказе при пустом поле email получателя


Рекомендуемые сообщения

Если не указывать email получателя при заказе, то получаем сообщение:

Language string failed to load: invalid_address: Пожалуйста введите минимум один Emailполучателя.
Warning: Cannot modify header information - headers already sent by (output started at /home/safiaru/domains/XXXXXXXX/public_html/includes/external/phpmailer/class.phpmailer.php:464) in /home/safiaru/domains/XXXXXXXX/public_html/inc/vam_redirect.inc.php on line 47
 

Почему “Language string failed to load”?
 
Если email – обязательное поле, то как вывести сообщение об этом в таком виде, как у сообщения о невыбранном способе доставки - в красивой красной рамке и с возможностью доввода данных?
 
И можно ли сделать это поле необязательным?
Ссылка на сообщение
Поделиться на другие сайты

Проверьте в файле send_order.php в строке примерно 95 должен быть код:

// send mail to customer
if (isset($order->customer['email_address'])) {
vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $order->customer['email_address'], $order->customer['firstname'].' '.$order->customer['lastname'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', $order_subject, $html_mail, $txt_mail);
}

Это не отсылает письмо заказчику, если он не указал емайл

Ссылка на сообщение
Поделиться на другие сайты

if (isset($order->customer['email_address'])) ...


Насколько я понимаю незнакомый (похоже, что пока незнакомый) мне php, это проверка на существование свойства email_address заказчика customer заказа $order. А надо бы еще проверять email_address на непустоту.

Я добавил отладочное сообщение  echo 'send mail to customer:(',$order->customer['email_address'],')','<br>'; внутри тела условия.
При пустом e-mail получил текст:
 
send mail to customer:()

Т.о. я могу сделать вывод, что почта заказчику пытается отправляться, хоть адрес его и не указан ;-((( 

 

 
Ссылка на сообщение
Поделиться на другие сайты

AndyB

 

Скачайте архив с VamShop и возьмите оттуда файл /send_order.php

 

Как выше писал [:|||||||:], там добавлено условие - не отправлять почту, если не указан email.

Ссылка на сообщение
Поделиться на другие сайты

У меня в send_order.php есть эти строки!
Но условие (isset($order->customer['email_address'])) выполняется даже при пустом email получателя ;-((

Для проверки я добавил вывод всех переменных из $order уже после (!) срабатывания условия.

И вижу, что в пусто: ["email_address"]=> string(0) ""
 

// send mail to customer
if (isset($order->customer['email_address'])) {
echo var_dump($order);
vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $order->customer['email_address'], $order->customer['firstname'].' '.$order->customer['lastname'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', $order_subject, $html_mail, $txt_mail);
}
 
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...