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


Выбрать шаблон и создать сайт

  • Закрытая тема Тема закрыта

Не отправляется заказ на почту... J1.5+VM1.1.3

#1 kocmocivan

kocmocivan
  • Пользователь
  • 99 сообщений
  • Репутация: 0
0

Отправлено 06 Февраль 2010 - 14:35

И СНОВА Я...... :rolleyes:
ZiTosS прошу помоги плизззЗ!
Возникла трабла, нелады садминкой в ВМ не могу просматривать заказы, но естьт выход.
Есть форма оформления заказа, где указываются обязательныйе поля и + необязательное поле E-mail (не у всех покупателей он есть).
Нау так вот если человек вписал в поле E_mail свою почту то на мою почту (zdesplitka@yandex.ru)
приходит его заказ от postmaster@zdesplitka.nichost.ru
А если он не писал свою почту то неприходит ничего.
А хотелось бы независимо от того вписана почта или нет , чтобы мне отправлялось письмо с заказом на почту в яндексе...
Вроде нашел часть кода отвечающего за отправку, но немогу разобраться что тут за эту проблему отвечает.
ПОМОГИ ПЛИЗ!

/ Отправка писем
vmMail($vendor_email['from'], $mosConfig_fromname, $vendor_email['to'], $vendor_email['subject'], $vendor_email['message'], false);

echo "<p>".nl2br($shopper_email['message'])."</p>";
if( $checkout['customer_copy'] == 1 ) {
vmMail($shopper_email['from'], $mosConfig_fromname, $shopper_email['to'], $shopper_email['subject'], $shopper_email['message'], false);
echo "Копия этого сообщения отправлена на адрес ".$shopper_email['to'];
}
else {
echo "Сохраните это сообщение, так как Вам не было отправлено уведомление.";
}

$ps_cart->reset();
unset($checkout);

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Февраль 2010 - 14:52

kocmocivan, Побольше кода, тут не видно условий, пи которых происходит отправка тебе.
+ приложи пожалуйста определение функции vmMail() сюда.
  • 0

#3 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 06 Февраль 2010 - 17:54

ТЕКСТ всего скрипта
<?php 
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/**
*
* @version $Id: checkout_without_register_form.php,v 1.0 2006/10/20 23:31 tug Exp $
* @package VirtueMart
* @subpackage html
* @copyright Copyright (C) 2004-2005 Soeren Eberhardt. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is

*

See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
mm_showMyFileName( __FILE__ );

$checkout = mosGetParam($_REQUEST, 'checkout', '');

$error = '';
if ( is_array($checkout) && count($checkout) ) {
require_once( CLASSPATH.'ps_main.php' );

if( $checkout['name'] == '' || vmValidateName($checkout['name']) == false ) {
$error .= '<p>Вы не указали имени контактного лица или указали неверно.</p>';
}

preg_replace('/\D/', '', $checkout['phone']);
if ( $checkout['phone'] == '' || strlen($checkout['phone']) < 6 ) {
$error .= '<p>Вы не указали контактного телефона или указали неверно.</p>';
}

if ( $checkout['address'] == '' || strlen($checkout['address']) < 8 ) {
$error .= '<p>Вы не указали свой адрес или указали неверно.</p>';
}

if ( function_exists('vmValidateEmail') ) {
$email_check = vmValidateEmail($checkout['email']);
}
else {
$email_check = mShop_validateEmail($checkout['email']);
}

if ( ($checkout['customer_copy'] == 1 && !$checkout['email']) || ($checkout['customer_copy'] == 1 && $email_check == false) ) {
$error .= '<p>Вы указали, что хотите получить копию заказа на свою электронную почту, но не указали адрес или указали неверно.</p>';
}
}

if ( !is_array($checkout) || !count($checkout) || !empty($error) ) {
?>

<form method="post" action="index.php" id="without_register_form">
<?php if($error) echo '<fieldset><legend>Ошибка</legend>'.$error.'</fieldset>'; ?>
<fieldset>
<legend class="sectiontableheader">Покупка без регистрации.</legend>

<label for="name">Контактное лицо*: <br /></label>
<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" /><br />

<label for="phone">Телефон*: <br /></label>
<input id="phone" name="checkout[phone]" value="<?php if ( $checkout ) echo $checkout['phone']; ?>" class="inputbox" /><br />

<label for="phone">Адрес*: <br /></label>
<input id="phone" name="checkout[address]" value="<?php if ( $checkout ) echo $checkout['address']; ?>" class="inputbox" /><br />

<label for="email">E-mail: <br /></label>
<input id="email" name="checkout[email]" value="<?php if ( $checkout ) echo $checkout['email']; ?>" class="inputbox" /><br />

<?php $selected = 'selected="selected"'; ?>
<label for="email">Отправить вам копию? <br /></label>
<select id="email" name="checkout[customer_copy]" class="inputbox" />
<optgroup>

<option value="1" <?php if( $checkout && $checkout['customer_copy'] == 1 ) echo $selected; ?>>Да</option>
<option value="0" <?php if( !$checkout || $checkout['customer_copy'] != 1 ) echo $selected; ?>>Нет</option>
</optgroup>
</select>
<br />

<label for="comment">Комментарий: <br /></label>
<textarea id="comment" name="checkout[comment]" class="inputbox"><?php if ( $checkout ) echo $checkout['comment']; ?></textarea><br />

<div id="submit_wrap">
<input type="submit" value="Отправить" class="button" style="width:auto;text-align:center" />
</div>

<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="checkout.without_register_form" />

</fieldset>
</form>

<style>
<!--
#without_register_form {
font-size: 1em; /* размер шрифта формы */
}

#without_register_form fieldset {
/*width: 35em; /* рамка вокруг формы */
border: solid 1px #333; /* нормальная граница рамки */
}

#without_register_form legend {
}

#without_register_form label {
float: left; /* подписи к полям сдвигаются влево */
width: 15em; /* ширина колонки подписей */
line-height: 1em;
margin-right: 0.1em; /* отступ до поля ввода */
text-align: right;
}

#without_register_form input, #without_register_form select, #without_register_form textarea {
margin: 0 0 0.5em 0.2em;
width: 20em; /* ширина полей формы */
padding: 0;
/* делаем одинаковый шрифт для input, select, textarea */
font-family: Verdana, sans-serif;
font-size: 100%;
}

#without_register_form .noresize {
width:auto; /* для кнопок, переключателей */
}

#without_register_form .submit {
/* сдвигаем кнопку отправки */
/*margin-left:;*/
text-align: right;
}

#without_register_form #submit_wrap {
text-align: center;
margin-right:0.2em;
}
-->
</style>

<?php
}
else {
global $cart, $sess, $VM_LANG, $CURRENCY_DISPLAY;

// Проверяем чтобы был хотябы один товар.
if( $cart['idx'] < 1 ) mosRedirect('index.php?option=com_virtuemart');

$ps_vendor_id = $_SESSION["ps_vendor_id"];
require_once(CLASSPATH. 'ps_checkout.php' );
$ps_checkout = new ps_checkout;
require_once(CLASSPATH. 'ps_product.php' );
$ps_product = new ps_product;
require_once(CLASSPATH.'ps_cart.php');
$ps_cart = new ps_cart;

$db = new ps_DB;

//if (AFFILIATE_ENABLE == '1') {
// require_once(CLASSPATH.'ps_affiliate.php');
// $ps_affiliate = new ps_affiliate;
//}

/* Генерим уникальный номер заказа в системе VM */
$order_number = $ps_checkout->get_order_number();

/* Подсчитываем примерную общую стоимость без учёта налогов и доставки */
$order_subtotal = $tmp_subtotal = $ps_checkout->calc_order_subtotal($d);

//$order_taxable = $ps_checkout->calc_order_taxable($d);
//$payment_discount = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $order_subtotal);

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$coupon_discount = floatval($_SESSION['coupon_discount']);
}
else {
$coupon_discount = 0.00;
}

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $this->calc_order_tax($order_taxable, $d), 2 );

// Проверяем чтобы сумма заказа не ушла в минус
if( $tmp_subtotal < 0 ) $order_subtotal = $tmp_subtotal = 0;
//if( $order_taxable < 0 ) $order_taxable = 0;

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $ps_checkout->calc_order_tax($order_taxable, $d), 2 );
//if( $this->_SHIPPING ) {
/* sets _shipping */
// $d['order_shipping'] = $order_shipping = round( $this->calc_order_shipping( $d ), 2 );

/* sets _shipping_tax
* btw: This is WEIRD! To get an exactly rounded value we have to convert
* the amount to a String and call "round" with the string. */
// $d['order_shipping_tax'] = $order_shipping_tax = round( strval($this->calc_order_shipping_tax($d)), 2 );

//$shipping_taxrate = $this->_SHIPPING->get_tax_rate();
//@$order_tax_details[$shipping_taxrate] += $order_shipping_tax;
//}
//else {
// $d['order_shipping'] = $order_shipping = $order_shipping_tax = $d['order_shipping_tax'] = 0.00;
//}

$timestamp = time() + ($mosConfig_offset*60*60);

// Вычисление итоговой суммы превращается в вычитании из предположительной суммы скидки по купону
$d['order_total'] = $order_total = $tmp_subtotal
/*+ $order_tax */
/*+ $order_shipping */
/*+ $order_shipping_tax*/
- $coupon_discount
/*- $payment_discount*/;

//$order_tax *= $discount_factor;

//if (!$this->validate_form($d)) {
// return false;
//}

//if (!$this->validate_add($d)) {
// return false;
//}

// Проверяем на отрицательное значение итоговую сумму заказа
if( $order_total < 0 ) $order_total = 0;

// Округляем итоговую сумму заказа до второго знака после запятой
$order_total = round( $order_total, 2);

// Пишем в лог отладочную информацию
$vmLogger->debug( '-- Checkout Debug--
Subtotal: '.$order_subtotal.'
Coupon Discount: '.$coupon_discount.'
------------------------
Order Total: '.$order_total.'
----------------------------'
);

// Check to see if Payment Class File exists
//$payment_class = $ps_payment_method->get_field($d["payment_method_id"], "payment_class");
//$enable_processor = $ps_payment_method->get_field($d["payment_method_id"], "enable_processor");

//if (file_exists(CLASSPATH . "payment/$payment_class.php") ) {
// if( !class_exists( $payment_class ))
// include( CLASSPATH. "payment/$payment_class.php" );

// eval( "\$_PAYMENT = new $payment_class();" );
// if (!$_PAYMENT->process_payment($order_number,$order_total, $d)) {
// $vmLogger->err( $VM_LANG->_PHPSHOP_PAYMENT_ERROR." ($payment_class)" );
// $_SESSION['last_page'] = "checkout.index";
// $_REQUEST["checkout_next_step"] = CHECK_OUT_GET_PAYMENT_METHOD;
// return False;
// }
//}

//else {
// $d["order_payment_log"] = $VM_LANG->_PHPSHOP_CHECKOUT_MSG_LOG;
//}

// Если купон был подарочным, то мы его удаляем
if( @$_SESSION['coupon_type'] == "gift" ) {
$d['coupon_id'] = $_SESSION['coupon_id'];
include_once( CLASSPATH.'ps_coupon.php' );
ps_coupon::remove_coupon_code( $d );
}

// Получаем IP
if (!empty($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
else {
$ip = 'unknown';
}

/* 1.0.9
`order_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`vendor_id` int(11) NOT NULL default '0',
`order_number` varchar(32) default NULL,
`user_info_id` varchar(32) default NULL,
`order_total` decimal(10,2) NOT NULL default '0.00',
`order_subtotal` decimal(10,5) default NULL,
`order_tax` decimal(10,2) default NULL,
`order_shipping` decimal(10,2) default NULL,
`order_shipping_tax` decimal(10,2) default NULL,
`coupon_discount` decimal(10,2) NOT NULL default '0.00',
`order_discount` decimal(10,2) NOT NULL default '0.00',
`order_currency` varchar(16) default NULL,
`order_status` char(1) default NULL,
`cdate` int(11) default NULL,
`mdate` int(11) default NULL,
`ship_method_id` varchar(255) default NULL,
`customer_note` text NOT NULL,
`ip_address` varchar(15) NOT NULL default '',
*/
/* Добавляем в базу основную информацию о заказе */
$q = "INSERT INTO #__{vm}_orders ";
$q .= "(user_id, vendor_id, order_number, user_info_id, ship_method_id, order_total, order_subtotal, order_tax, order_shipping, order_shipping_tax, order_discount, coupon_discount, order_currency, order_status, cdate, mdate, customer_note, ip_address) ";
$q .= "VALUES ( 0, ".$ps_vendor_id.", '".$order_number."', '".$d["ship_to_info_id"]."', '', '".$order_total."', '".$order_subtotal."', '".$order_tax."', '".$order_shipping."', '".$order_shipping_tax."', '".$payment_discount."', '".$coupon_discount."', '".$_SESSION['vendor_currency']."', 'P', '".$timestamp."', '".$timestamp."', '".addslashes(htmlspecialchars(strip_tags($checkout['comment'])))."', '".$ip."');";

$db->query($q);
$db->next_record();

/* Берем порядковый номер только что добавленного заказа */
$q = "SELECT order_id FROM #__{vm}_orders WHERE order_number = ";
$q .= "'" . $order_number . "'";

$db->query($q);
$db->next_record();

$d["order_id"] = $order_id = $db->f("order_id");

/**
* Создаём историю заказа.
*/
$mysqlDatetime = date("Y-m-d G:i:s", $timestamp);

$q = "INSERT INTO #__{vm}_order_history ";
$q .= "(order_id,order_status_code,date_added,customer_notified,comments) VALUES (";
$q .= "'$order_id', 'P', '" . $mysqlDatetime . "', 1, '')";
$db->query($q);

/**
* Insert the Order payment info
*/
//$payment_number = ereg_replace(" |-", "", @$_SESSION['ccdata']['order_payment_number']);

//$d["order_payment_code"] = @$_SESSION['ccdata']['credit_card_code'];

// Payment number is encrypted using mySQL ENCODE function.
//$q = "INSERT INTO #__{vm}_order_payment ";
//$q .= "(order_id, order_payment_code, payment_method_id, order_payment_number, ";
//$q .= "order_payment_expire, order_payment_log, order_payment_name, order_payment_trans_id) ";
//$q .= "VALUES ('$order_id', ";
//$q .= "'" . $d["order_payment_code"] . "', ";
//$q .= "'" . $d["payment_method_id"] . "', ";
//$q .= "ENCODE(\"$payment_number\",\"" . ENCODE_KEY . "\"), ";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_expire"] . "',";
//$q .= "'" . @$d["order_payment_log"] . "',";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_name"] . "',";
//$q .= "'" . $vmInputFilter->safeSQL( @$d["order_payment_trans_id"] ). "'";
//$q .= ")";
//$db->query($q);
//$db->next_record();

/**
* Вставляем информацию о адресах пользователя и покупателя. Т.к. у нас их нет, то пишем что-нить
* Вообще это очень важная хуйня, т.к. без неё заказы не отображаются в админке
*/
// Bill To Address
$q = "INSERT INTO `#__{vm}_order_user_info` (order_info_id, order_id, user_id, address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5, bank_account_nr, bank_name, bank_sort_code, bank_iban, bank_account_holder, bank_account_type) ";
$q .= "VALUES ('', '".$order_id."', 0, 'BT', '-default-', '', '', '', '".$checkout['name']."', '', '".$checkout['phone']."', '', '', '".$checkout['address']."', '', '', '', '', '', '".$checkout['email']."', '', '', '', '', '', '', '', '', '', '', '') ";
$db->query( $q );

// Ship to Address if applicable
//$q = "INSERT INTO `#__{vm}_order_user_info` ";
//$q .= "SELECT '', '$order_id', '".$auth['user_id']."', address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5,bank_account_nr,bank_name,bank_sort_code,bank_iban,bank_account_ho
lder,bank_account_type FROM #__{vm}_user_info WHERE user_id='".$auth['user_id']."' AND user_info_id='".$d['ship_to_info_id']."' AND address_type='ST'";
//$db->query( $q );

/**
* Insert all Products from the Cart into order line items;
* one row per product in the cart
*/
$dboi = new ps_DB;

// Берем данные о продавце
$q = "SELECT * FROM #__{vm}_vendor WHERE vendor_id = '".$_SESSION['ps_vendor_id']."'";
$db->query($q);
$db->next_record();
$vendor_email['subject'] = $db->f("vendor_name").'. Новый заказ от незарегестрированного пользователя '.$checkout['name'].' ['.$order_id.']';
$shopper_email['subject'] = 'Ваш заказ на сайте «'.$mosConfig_live_site.'» ['.$order_id.']';
$vendor_email['to'] = $shopper_email['from'] = $db->f("contact_email");
if( $checkout['email'] ){
$shopper_email['to'] = $vendor_email['from'] = $checkout['email'];
}
else {
$vendor_email['from'] ='впишите мыло магазина';
}

// Берем данные о покупателе
$vendor_email['message'] .= "Номер заказа: ".$order_id."\n";
$vendor_email['message'] .= "Данные о покупателе\n";
$vendor_email['message'] .= "--------------------------------------------------\n";
$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Телефон: ".$checkout['phone']."\n";
$vendor_email['message'] .= "Адрес: ".$checkout['address']."\n";
if( $checkout['email'] ) $vendor_email['message'] .= "Электронная почта: ".$checkout['email']."\n";
if( $checkout['comment'] ) $vendor_email['message'] .= "Комментарий к заказу: ".$checkout['comment']."\n";
$vendor_email['message'] .= "--------------------------------------------------\n\n";

$shopper_email['message'] = "Уважаемый покупатель, пожалуйста проверьте информацию ниже и в случае ошибки свяжитесь с продавцом, указав уникальный номер заказа - [".$order_id."]\n\n";
$shopper_email['message'] .= "Данные о продавце\n";
$shopper_email['message'] .= "--------------------------------------------------\n";
if($db->f("contact_phone1")) $shopper_email['message'] .= "Телефон 1: ".$db->f("contact_phone1")."\n";
if($db->f("contact_phone2")) $shopper_email['message'] .= "Телефон 2: ".$db->f("contact_phone2")."\n";
if($db->f("contact_fax")) $shopper_email['message'] .= "Факс: ".$db->f("contact_fax")."\n";
$shopper_email['message'] .= "Электронная почта: ".$db->f("contact_email")."\n";
$shopper_email['message'] .= "Сайт: ".$db->f("vendor_url")."\n";
$shopper_email['message'] .= "--------------------------------------------------\n\n";

$message = "Данные о товарах\n";
$message .= "--------------------------------------------------";
for($i = 0; $i < $cart["idx"]; $i++) {

$r = "SELECT product_id,product_in_stock,product_sales,product_parent_id,product_sku,product_
name ";
$r .= "FROM #__{vm}_product WHERE product_id='".$cart[$i]["product_id"]."'";
$dboi->query($r);
$dboi->next_record();

$product_price_arr = $ps_product->get_adjusted_attribute_price($cart[$i]["product_id"], $cart[$i]["description"]);
$product_price = $product_price_arr["product_price"];

//if( empty( $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'] )) {
// $my_taxrate = $ps_product->get_product_taxrate($cart[$i]["product_id"] );
//}
//else {
// $my_taxrate = $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'];
//}
// Attribute handling
$product_parent_id = $dboi->f('product_parent_id');
$description = '';
if( $product_parent_id > 0 ) {

$db_atts = $ps_product->attribute_sql( $dboi->f('product_id'), $product_parent_id );
while( $db_atts->next_record()) {
$description .= $db_atts->f('attribute_name').': '.$db_atts->f('attribute_value').'; ';
}
}

$description .= $_SESSION['cart'][$i]["description"];

$product_final_price = round( ($product_price *($my_taxrate+1)), 2 );

$vendor_id = $db->f("vendor_id");

$product_currency = $product_price_arr["product_currency"];

$q = "INSERT INTO #__{vm}_order_item ";
$q .= "(order_id, user_info_id, vendor_id, product_id, order_item_sku, order_item_name, ";
$q .= "product_quantity, product_item_price, product_final_price, ";
$q .= "order_item_currency, order_status, product_attribute, cdate, mdate) ";
$q .= "VALUES ('";
$q .= $order_id . "', '";
$q .= $d["ship_to_info_id"] . "', '";
$q .= $vendor_id . "', '";
$q .= $cart[$i]["product_id"] . "', '";
$q .= addslashes($dboi->f("product_sku")) . "', '";
$q .= addslashes($dboi->f("product_name")) . "', '";
$q .= $cart[$i]["quantity"] . "', '";
$q .= $product_price . "', '";
$q .= $product_final_price . "', '";
$q .= $product_currency . "', ";
$q .= "'P','";
// added for advanced attribute storage
$q .= addslashes( $description ) . "', '";
// END advanced attribute modifications
$q .= $timestamp . "','";
$q .= $timestamp . "'";
$q .= ")";

$db->query($q);
$db->next_record();

// Берем данные о товарах
$message .= "\n";
$message .= $VM_LANG->_PHPSHOP_PRODUCT.": ";
if ($db->f("product_parent_id")) {
$message .= $dboi->f("order_item_name")."\n";
$message .= "SERVICE = ";
}
$message .= $dboi->f("product_name")."; ".$description."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_QUANTITY.": ";
$message .= $cart[$i]['quantity']."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_SKU.": ";
$message .= $dboi->f("product_sku")."\n";

$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_PRICE.": ";
$message .= $product_final_price;
$message .= "\n";

/* Update Stock Level and Product Sales */
if ($dboi->f("product_in_stock")) {
$q = "UPDATE #__{vm}_product ";
$q .= "SET product_in_stock = product_in_stock - ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '" . $cart[$i]["product_id"]. "'";
$db->query($q);
$db->next_record();
}

$q = "UPDATE #__{vm}_product ";
$q .= "SET product_sales = product_sales + ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '".$cart[$i]["product_id"]."'";
$db->query($q);
$db->next_record();

}

// DOWNLOAD MOD SKIPPED BECAUSE IT IS NOT REAL TO TRADE FILES WITHOUT PAYMENT

//if (AFFILIATE_ENABLE == '1') {
// $ps_affiliate->register_sale($order_id);
//}
// Export the order_id so the checkout complete page can get it
$d["order_id"] = $order_id;

// Now as everything else has been done, we can update
// the Order Status if the Payment Method is
// "Use Payment Processor", because:
// Payment Processors return false on any error
// Only completed payments return true!
//if( $enable_processor == "Y" ) {
// eval( "if( defined(\"".$_PAYMENT->payment_code."_VERIFIED_STATUS\")) {
// \$d['order_status'] = ".$_PAYMENT->payment_code."_VERIFIED_STATUS;
// \$update_order = true;
// }
// else
// \$update_order = false;" );
// if ( $update_order ) {
// require_once(CLASSPATH."ps_order.php");
// $ps_order =& new ps_order();
// $ps_order->order_status_update($d);
// }
//}

$message .= "--------------------------------------------------\n";
$message .= "Итого: ".$CURRENCY_DISPLAY->getFullValue($order_total)."\n";
$message .= "--------------------------------------------------\n";

$vendor_email['message'] .= $message;
$shopper_email['message'] .= $message;

// Отправка писем
vmMail($vendor_email['from'], $mosConfig_fromname, $vendor_email['to'], $vendor_email['subject'], $vendor_email['message'], false);

echo "<p>".nl2br($shopper_email['message'])."</p>";
if( $checkout['customer_copy'] == 1 ) {
vmMail($shopper_email['from'], $mosConfig_fromname, $shopper_email['to'], $shopper_email['subject'], $shopper_email['message'], false);
echo "Копия этого сообщения отправлена на адрес ".$shopper_email['to'];
}
else {
echo "Сохраните это сообщение, так как Вам не было отправлено уведомление.";
}

$ps_cart->reset();
unset($checkout);

// Подчищаем всякую хуйню
$d["payment_method_id"] = "";
$d["order_payment_number"] = "";
$d["order_payment_expire"] = "";
$d["order_payment_name"] = "";
$d["credit_card_code"] = "";
// Clear the sensitive Session data
$_SESSION['ccdata']['order_payment_name'] = "";
$_SESSION['ccdata']['order_payment_number'] = "";
$_SESSION['ccdata']['order_payment_expire_month'] = "";
$_SESSION['ccdata']['order_payment_expire_year'] = "";
$_SESSION['ccdata']['credit_card_code'] = "";
$_SESSION['coupon_discount'] = "";
$_SESSION['coupon_id'] = "";
$_SESSION['coupon_redeemed'] = false;

$_POST["payment_method_id"] = "";
$_POST["order_payment_number"] = "";
$_POST["order_payment_expire"] = "";
$_POST["order_payment_name"] = "";
}

?>

  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Февраль 2010 - 21:18

kocmocivan, ты мне не предоставил реализацию функции vmMail
Ищи в файлах по: function vmMail и вставляй сюда это определение.
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Февраль 2010 - 22:46

kocmocivan, попробуй строку:
$vendor_email['from'] ='впишите мыло магазина';
заменить на:
$vendor_email['from'] ='postmaster@zdesplitka.nichost.ru';
Если посмотреть на определение функции vmMail():
function vmMail($from, $fromname, $recipient, $subject, $body, $Altbody='', $mode=false, $cc=NULL, $bcc=NULL, $images=null, $attachment=null ) {
global $mosConfig_debug;

// Filter from, fromname and subject
if (!vmValidateEmail( $from ) || !vmValidateName( $fromname ) || !vmValidateName( $subject )) {
return false;
}

$mail = vmCreateMail( $from, $fromname, $subject, $body );

if( $Altbody != "" ) {
// In this section we take care for utf-8 encoded mails
$mail->AltBody = vmAbstractLanguage::safe_utf8_encode( $Altbody, $mail->CharSet );
}

// activate HTML formatted emails
if ( $mode ) {
$mail->IsHTML(true);
}
if( $mail->ContentType == "text/plain" ) {
$mail->Body = vmAbstractLanguage::safe_utf8_encode( $mail->Body, $mail->CharSet );
}
if( is_array($recipient) ) {
foreach ($recipient as $to) {
if( vmValidateEmail( $to )) {
$mail->AddAddress($to);
}
}
} else {
if( vmValidateEmail( $recipient )) {
$mail->AddAddress($recipient);
}
}
if (isset($cc)) {
if( is_array($cc) )
foreach ($cc as $to) {
if( vmValidateEmail( $to )) {
$mail->AddCC($to);
}
}
else {
if( vmValidateEmail( $cc )) {
$mail->AddCC($cc);
}
}
}
if (isset($bcc)) {
if( is_array($bcc) )
foreach ($bcc as $to) {
if( vmValidateEmail( $to )) {
$mail->AddBCC($to);
}
}
else {
if( vmValidateEmail( $bcc )) {
$mail->AddBCC($bcc);
}
}
}
if( $images ) {
foreach( $images as $image) {
$mail->AddEmbeddedImage( $image['path'], $image['name'], $image['filename'], $image['encoding'], $image['mimetype']);
}
}
if ($attachment) {
if ( is_array($attachment) )
foreach ($attachment as $fname) $mail->AddAttachment($fname);
else
$mail->AddAttachment($attachment);
}
$mailssend = $mail->Send();

if( $mosConfig_debug ) {
//$mosDebug->message( "Mails send: $mailssend");
}
if( $mail->error_count > 0 ) {
//$mosDebug->message( "The mail message $fromname <$from> about $subject to $recipient <b>failed</b><br /><pre>$body</pre>", false );
//$mosDebug->message( "Mailer Error: " . $mail->ErrorInfo . "" );
}
return $mailssend;
}


Первые строки занимаются проверкой переданных данных в функцию(проверка на валидность): email отправителя, имя отправителя, заголовок сообщения.
У нас же "email отправителя" = "впишите мыло магазина";
	if (!vmValidateEmail( $from ) || !vmValidateName( $fromname ) || !vmValidateName( $subject )) {
return false;
}

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

Поэтому и не отправляется письмо, так как при отправке в функцию vmMail() передаётся некорректный адрес:
   /* $checkout['email'] - переменная введённого пользователем email */
// если email БЫЛ введён пользователем
if( $checkout['email'] ){
$shopper_email['to'] = $vendor_email['from'] = $checkout['email']; // "письмо для покупателя email (кому)" = "письмо для продавца email (от кого)" = "email введенный пользователем"
}
// если email НЕ БЫЛ введён пользователем
else {
$vendor_email['from'] ='впишите мыло магазина'; // тут вместо "письмо для продавца email (от кого)" вставляем строку "впишите мыло магазина"
}

  • 0

#6 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 07 Февраль 2010 - 00:24

СПАСИБО! ЗАРАБОТАЛО!
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 07 Февраль 2010 - 12:27

kocmocivan, всегда рад помочь! Тему закрываю ;)
  • 0


Оформление форума – IPBSkins.ru