Olof Larsson Posted March 25, 2008 Author Share Posted March 25, 2008 Well actually the reason I created this contribution were that I wanted html mails for my own site and I didn't find any contribution I felt were good enough. If it is any good is up to you to decide, but I think it is very good ;) No I do not think it is incompatible with anything. The layouts must be programmed carfully due to the speciall rules for css and scripts in html emails that different mail clients have. The provided layouts are working all ok I think. Hi Olof, There's a couple of HTML email addons out there. Is there anything your contib does better then the other ones? Do you know if it is incompatible with any mail client or webmail? Thanks, Fredrik Quote Link to comment Share on other sites More sharing options...
usvi4me Posted March 25, 2008 Share Posted March 25, 2008 If you do not use programms for pc i can recommend SourceGear Diff Merge. That is a similar program i just found. It is free and can do almost the same things as beyond compare. Ok you say that the dropdown is blank... Take a look at the function: function tep_cfg_pull_down_uhtml_email_layout_list($default_id) in "catalog/admin/includes/functions/general.php" Is searches for the "create_account_XXXX.php" files in the folder DIR_FS_CATALOG_MODULES.'UHtmlEmails/' The layouts displayed in the dropdown are the different XXXX found. If it is blank; no files were found. Make sure the files are in the directory DIR_FS_CATALOG_MODULES.'UHtmlEmails/ Actually, BBEdit does a great job as well. Anyway, I found the problem. I'm on 1.1 DuHuh Quote Link to comment Share on other sites More sharing options...
Guest Posted March 29, 2008 Share Posted March 29, 2008 Hello nice work with this but I am only receiving html emails when using "Cash on delivery, cheque or postal orders" If a customer pays via paypal or protx the get a normal text email. Im have tried with both supplied layouts. Also with development mode = True. And pay by cheque/postal order i get this error.... Warning: fopen(Last_mail_from_checkout_process.php.htm) [function.fopen]: failed to open stream: Permission denied in /home/ians/public_html/checkout_process.php on line 297 can't open error log file Am I doing something wrong, I have gone through the install.txt twice and checked all files and everything seems fine. I updated the database via phpmyadmin Quote Link to comment Share on other sites More sharing options...
Guest Posted March 30, 2008 Share Posted March 30, 2008 (edited) Right I checked again and found I had made a mistake with inserting some code... MODIFY THE FILE catalog/admin/orders.php ######## FIND ######## if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) { $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n"; } I inseted BEFORE the last bracket :blush: Everything works now, "Order Process" emails are in HTML form from Protx and Cheque/Postal orders BUT bloody Paypal is still playing up. If someone pays using Paypal and completes the checkout process. The "Order Process" is in normal text form. If I update that orders status though the email is sent in HTML. I am using PayPal_Shopping_Cart_IPN_v3.1.4 by the way Crazy Edited March 30, 2008 by SimpleSi Quote Link to comment Share on other sites More sharing options...
dealwititp Posted March 31, 2008 Share Posted March 31, 2008 SimpleSi, I am having the sample problem as you with getting the contrib to work with PayPal IPN. After researching this forum and no finding a direct answer, I found that by applying the following changes to the ipn.php file located in catalog/ext/modules/payment/paypal_ipn/ipn.php. Find: $email_order = STORE_NAME . "\n" . Insert this on the line above: // EOF content type fix by AlexStudio // $order variables have been changed from checkout_process to work with the variables from the function query () instead of cart () in the order class //--- Beginning of addition: Ultimate HTML Emails ---// if (EMAIL_USE_HTML == 'true') { require(DIR_WS_MODULES . 'UHtmlEmails/checkout_process_'. ULTIMATE_HTML_EMAIL_LAYOUT .'.php'); $email_order = $html_email; }else{//Send text email //--- End of addition: Ultimate HTML Emails ---// $order = new order($insert_id); The line $order = new order($insert_id); may not be necessary. I added from another mod, I think. Just delete it if it doesn't work for you. Find: tep_mail($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); Insert this on the line above: //--- Beginning of addition: Ultimate HTML Emails ---// } if(ULTIMATE_HTML_EMAIL_DEVELOPMENT_MODE === 'true'){ //Save the contents of the generated html email to the harddrive in .htm file. This can be practical when developing a new layout. $TheFileName = 'Last_mail_from_checkout_process.php.htm'; $TheFileHandle = fopen($TheFileName, 'w') or die("can't open error log file"); fwrite($TheFileHandle, $email_order); fclose($TheFileHandle); } //--- End of addition: Ultimate HTML Emails ---// This will generate the HTML email when the paypal ipn is used for checkout, however I'm now having a problem getting my order number to display. If any has an idea of why this is happening, I'm all ears. Also note that I am using PayPal IPN v2.3.3. Thanks, Walt Quote Link to comment Share on other sites More sharing options...
danta67 Posted March 31, 2008 Share Posted March 31, 2008 (edited) hi there i really love this contri and is working great but on some products we use product atributes options if the order comes in the email looks fine but didnt add the product attributes right its mixed up any help danta67 fixed it my mistake Edited March 31, 2008 by danta67 Quote Link to comment Share on other sites More sharing options...
Guest Posted March 31, 2008 Share Posted March 31, 2008 Thanks for the reply dealwititp But I am using a different version on IPN than you and dont have the paypal_ipn file. Thanks again. Quote Link to comment Share on other sites More sharing options...
cornishpirate Posted April 2, 2008 Share Posted April 2, 2008 Any plans to incorporate Notifications & Tell a Friend? After the beauty of U HTML, plain text is ugly !!!!!!!! Quote Link to comment Share on other sites More sharing options...
Olof Larsson Posted April 2, 2008 Author Share Posted April 2, 2008 SimpleSi, I am having the sample problem as you with getting the contrib to work with PayPal IPN. After researching this forum and no finding a direct answer, I found that by applying the following changes to the ipn.php file located in catalog/ext/modules/payment/paypal_ipn/ipn.php. Find: $email_order = STORE_NAME . "\n" . Insert this on the line above: // EOF content type fix by AlexStudio // $order variables have been changed from checkout_process to work with the variables from the function query () instead of cart () in the order class //--- Beginning of addition: Ultimate HTML Emails ---// if (EMAIL_USE_HTML == 'true') { require(DIR_WS_MODULES . 'UHtmlEmails/checkout_process_'. ULTIMATE_HTML_EMAIL_LAYOUT .'.php'); $email_order = $html_email; }else{//Send text email //--- End of addition: Ultimate HTML Emails ---// $order = new order($insert_id); The line $order = new order($insert_id); may not be necessary. I added from another mod, I think. Just delete it if it doesn't work for you. Find: tep_mail($order->customer['name'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); Insert this on the line above: //--- Beginning of addition: Ultimate HTML Emails ---// } if(ULTIMATE_HTML_EMAIL_DEVELOPMENT_MODE === 'true'){ //Save the contents of the generated html email to the harddrive in .htm file. This can be practical when developing a new layout. $TheFileName = 'Last_mail_from_checkout_process.php.htm'; $TheFileHandle = fopen($TheFileName, 'w') or die("can't open error log file"); fwrite($TheFileHandle, $email_order); fclose($TheFileHandle); } //--- End of addition: Ultimate HTML Emails ---// This will generate the HTML email when the paypal ipn is used for checkout, however I'm now having a problem getting my order number to display. If any has an idea of why this is happening, I'm all ears. Also note that I am using PayPal IPN v2.3.3. Thanks, Walt If you take a look at your module DIR_WS_MODULES . 'UHtmlEmails/checkout_process_'. ULTIMATE_HTML_EMAIL_LAYOUT .'.php you will find that the variable supposed to contain the order number is called: $insert_id This variable is normaly set in checkout_process.php but if you are running this module from another file you should make sure to set this variable in that document. This goes for all variables in the module. You should check that they all exist in the file in which you include the module. Regards, Olof Quote Link to comment Share on other sites More sharing options...
Olof Larsson Posted April 2, 2008 Author Share Posted April 2, 2008 hi therei really love this contri and is working great but on some products we use product atributes options if the order comes in the email looks fine but didnt add the product attributes right its mixed up any help danta67 fixed it my mistake Hi Danta, Thank you for liking my contribution :lol: Would you please describe your error more in detail. Please include as much information as possible so I can help you. Or have you solved this problem of yours allready? Regards, Olof Quote Link to comment Share on other sites More sharing options...
Olof Larsson Posted April 2, 2008 Author Share Posted April 2, 2008 Any plans to incorporate Notifications & Tell a Friend? After the beauty of U HTML, plain text is ugly !!!!!!!! Well this is a good idea. "Password fogotten" emails should allso be covered. If I get any freetime from school I will most truly fix this. The plugin should cover all emails sent from the store, not only the most important ones. This makes sense. Quote Link to comment Share on other sites More sharing options...
oenka Posted April 8, 2008 Share Posted April 8, 2008 Great contribution!! Works perfectly. I only have a guestion about U HTML Emails in combination with Paypal IPN. Does anybody know how to put the Firstname, lastname, shippingcost + total amount in the e-mail in combination with Paypal IPN ? Thx in advanced Quote Link to comment Share on other sites More sharing options...
Guest Posted April 8, 2008 Share Posted April 8, 2008 Great contribution!! Works perfectly. I only have a guestion about U HTML Emails in combination with Paypal IPN. Does anybody know how to put the Firstname, lastname, shippingcost + total amount in the e-mail in combination with Paypal IPN ? Thx in advanced Which Paypal_IPN contrib are you using ? Quote Link to comment Share on other sites More sharing options...
oenka Posted April 9, 2008 Share Posted April 9, 2008 (edited) I`m using PayPal IPN v2.3.3. Everything works great accept Firstname, lastname, shippingcost + total amount. Edited April 9, 2008 by oenka Quote Link to comment Share on other sites More sharing options...
baderbnk Posted April 10, 2008 Share Posted April 10, 2008 Hi I have a problem, do not modify DATABASE CHANGES Run the 'Install.sql' file, for example using phpMyadmin. This will create the configuration keys: "E-mail Options" -> "Html Email Layout" "E-mail Options" -> "Development mode" Where I find the file and as install.sql change? I have on my server installed directadminv1 Thanks Quote Link to comment Share on other sites More sharing options...
adam777 Posted April 16, 2008 Share Posted April 16, 2008 (edited) Hi Great idea! Unfortunately it doesn't work with Fast Easy Checkout 3.2 v5.1 for RC2a. I get the following error: Warning: main(includes/modules/UHtmlEmails/checkout_process_Basic.php) [function.main]: failed to open stream: No such file or directory in xxxxxxxxxxxxxxxxxxxxxxxxx/checkout_process.php on line 256 Warning: main(includes/modules/UHtmlEmails/checkout_process_Basic.php) [function.main]: failed to open stream: No such file or directory in xxxxxxxxxxxxxxxxxxxxxxxx/checkout_process.php on line 256 Fatal error: main() [function.require]: Failed opening required 'includes/modules/UHtmlEmails/checkout_process_Basic.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/checkout_process.php on line 256 ...and my code for checkout_process.php is: <?php /* $Id: checkout_process.php 1750 2007-12-21 05:20:28Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2007 osCommerce Released under the GNU General Public License */ ////fec configuration $allow_second_chance_account_in_email=0;// set to 1 to allow create an account in email include('includes/application_top.php'); require(DIR_WS_LANGUAGES . $language . '/' . 'fast_account.php'); // if the customer is not logged on, redirect them to the login page if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT)); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } // if there is nothing in the customers cart, redirect them to the shopping cart page if ($cart->count_contents() < 1) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } // if no shipping method has been selected, redirect the customer to the shipping method selection page if (!tep_session_is_registered('shipping') || !tep_session_is_registered('sendto')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } // avoid hack attempts during the checkout procedure by checking the internal cartID if (isset($cart->cartID) && tep_session_is_registered('cartID')) { if ($cart->cartID != $cartID) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } } include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS); // load selected payment module require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment($payment); // load the selected shipping module require(DIR_WS_CLASSES . 'shipping.php'); $shipping_modules = new shipping($shipping); require(DIR_WS_CLASSES . 'order.php'); $order = new order; // Stock Check $any_out_of_stock = false; if (STOCK_CHECK == 'true') { for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) { $any_out_of_stock = true; } } // Out of Stock if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } } $payment_modules->update_status(); if ( ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL')); } require(DIR_WS_CLASSES . 'order_total.php'); $order_total_modules = new order_total; $order_totals = $order_total_modules->process(); // load the before_process function from the payment modules $payment_modules->before_process(); $sql_data_array = array('customers_id' => $customer_id, 'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'], 'customers_company' => $order->customer['company'], 'customers_street_address' => $order->customer['street_address'], 'customers_suburb' => $order->customer['suburb'], 'customers_city' => $order->customer['city'], 'customers_postcode' => $order->customer['postcode'], 'customers_state' => $order->customer['state'], 'customers_country' => $order->customer['country']['title'], 'customers_telephone' => $order->customer['telephone'], 'customers_email_address' => $order->customer['email_address'], 'customers_address_format_id' => $order->customer['format_id'], 'delivery_name' => trim($order->delivery['firstname'] . ' ' . $order->delivery['lastname']), 'delivery_company' => $order->delivery['company'], 'delivery_street_address' => $order->delivery['street_address'], 'delivery_suburb' => $order->delivery['suburb'], 'delivery_city' => $order->delivery['city'], 'delivery_postcode' => $order->delivery['postcode'], 'delivery_state' => $order->delivery['state'], 'delivery_country' => $order->delivery['country']['title'], 'delivery_address_format_id' => $order->delivery['format_id'], 'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'billing_company' => $order->billing['company'], 'billing_street_address' => $order->billing['street_address'], 'billing_suburb' => $order->billing['suburb'], 'billing_city' => $order->billing['city'], 'billing_postcode' => $order->billing['postcode'], 'billing_state' => $order->billing['state'], 'billing_country' => $order->billing['country']['title'], 'billing_address_format_id' => $order->billing['format_id'], 'payment_method' => $order->info['payment_method'], 'cc_type' => $order->info['cc_type'], 'cc_owner' => $order->info['cc_owner'], 'cc_number' => $order->info['cc_number'], 'cc_expires' => $order->info['cc_expires'], 'date_purchased' => 'now()', 'orders_status' => $order->info['order_status'], 'currency' => $order->info['currency'], 'currency_value' => $order->info['currency_value']); tep_db_perform(TABLE_ORDERS, $sql_data_array); $insert_id = tep_db_insert_id(); for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { $sql_data_array = array('orders_id' => $insert_id, 'title' => $order_totals[$i]['title'], 'text' => $order_totals[$i]['text'], 'value' => $order_totals[$i]['value'], 'class' => $order_totals[$i]['code'], 'sort_order' => $order_totals[$i]['sort_order']); tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array); } $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0'; $sql_data_array = array('orders_id' => $insert_id, 'orders_status_id' => $order->info['order_status'], 'date_added' => 'now()', 'customer_notified' => $customer_notification, 'comments' => $order->info['comments']); tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); // initialized for the email confirmation $products_ordered = ''; $subtotal = 0; $total_tax = 0; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { // Stock Update - Joao Correia if (STOCK_LIMITED == 'true') { if (DOWNLOAD_ENABLED == 'true') { $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa ON p.products_id=pa.products_id LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad ON pa.products_attributes_id=pad.products_attributes_id WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"; // Will work with only one option for downloadable products // otherwise, we have to build the query dynamically with a loop $products_attributes = $order->products[$i]['attributes']; if (is_array($products_attributes)) { $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'"; } $stock_query = tep_db_query($stock_query_raw); } else { $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } if (tep_db_num_rows($stock_query) > 0) { $stock_values = tep_db_fetch_array($stock_query); // do not decrement quantities if products_attributes_filename exists if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) { $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty']; } else { $stock_left = $stock_values['products_quantity']; } tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) { tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } } } // Update products_ordered (for bestsellers list) tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); $sql_data_array = array('orders_id' => $insert_id, 'products_id' => tep_get_prid($order->products[$i]['id']), 'products_model' => $order->products[$i]['model'], 'products_name' => $order->products[$i]['name'], 'products_price' => $order->products[$i]['price'], 'final_price' => $order->products[$i]['final_price'], 'products_tax' => $order->products[$i]['tax'], 'products_quantity' => $order->products[$i]['qty']); tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array); $order_products_id = tep_db_insert_id(); //------insert customer choosen option to order-------- $attributes_exist = '0'; $products_ordered_attributes = ''; if (isset($order->products[$i]['attributes'])) { $attributes_exist = '1'; for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) { if (DOWNLOAD_ENABLED == 'true') { $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad on pa.products_attributes_id=pad.products_attributes_id where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"; $attributes = tep_db_query($attributes_query); } else { $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"); } $attributes_values = tep_db_fetch_array($attributes); $sql_data_array = array('orders_id' => $insert_id, 'orders_products_id' => $order_products_id, 'products_options' => $attributes_values['products_options_name'], 'products_options_values' => $attributes_values['products_options_values_name'], 'options_values_price' => $attributes_values['options_values_price'], 'price_prefix' => $attributes_values['price_prefix']); tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array); if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) { $sql_data_array = array('orders_id' => $insert_id, 'orders_products_id' => $order_products_id, 'orders_products_filename' => $attributes_values['products_attributes_filename'], 'download_maxdays' => $attributes_values['products_attributes_maxdays'], 'download_count' => $attributes_values['products_attributes_maxcount']); tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array); } $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name']; } } //------insert customer choosen option eof ---- $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']); $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty']; $total_cost += $total_products_price; $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n"; } //fec start // lets start with the email confirmation $email_order = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n"; if (!tep_session_is_registered('createaccount')) { $email_order .= EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n";} $email_order .= EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n"; ///////////// $check_customer_query = tep_db_query("select customers_firstname, customers_lastname, customers_password, customers_id ,confirmation_key from " . TABLE_CUSTOMERS . " where customers_email_address = '" . $order->customer['email_address'] . "' AND createaccount='N'"); $check_customer = tep_db_fetch_array($check_customer_query); $new_password = $check_customer['confirmation_key']; ///IMPORTANT YOU ADD THE NEXT FEW LINES IF YOU WANT TO OFFER SECOND CHANCE CREATE //ACCOUNT IN EMAIL YOU CAN ALSO USE THIS VALUE TO INFORM THE CUSTOMER OF HIS // AUTO GENERATED PASSWORD if((tep_session_is_registered('createaccount'))&&($allow_second_chance_account_in_email == 1)) { $email_order .= EMAIL_TEXT_INVOICE_PASSWORD . ' ' . tep_href_link('account_password_new.php', 'confirmation_password=' . $new_password.'&customers_id='.$check_customer['customers_id'], 'SSL', true) . "\n"; $email_order .= EMAIL_TEXT_INVOICE_PASSWORD_NOLINK. "\n"; } //END OPTIONAL //////////// if ($order->info['comments']) { $email_order .= tep_db_output($order->info['comments']) . "\n\n"; } $email_order .= EMAIL_TEXT_PRODUCTS . "\n" . EMAIL_SEPARATOR . "\n" . $products_ordered . EMAIL_SEPARATOR . "\n"; //fast easy checkout end for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n"; } if ($order->content_type != 'virtual') { $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" . EMAIL_SEPARATOR . "\n" . tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n"; } $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" . EMAIL_SEPARATOR . "\n" . tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n"; if (is_object($$payment)) { $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" . EMAIL_SEPARATOR . "\n"; $payment_class = $$payment; $email_order .= $order->info['payment_method'] . "\n\n"; if ($payment_class->email_footer) { $email_order .= $payment_class->email_footer . "\n\n"; } } tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); // send emails to other people if (SEND_EXTRA_ORDER_EMAILS_TO != '') { tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); } // load the after_process function from the payment modules $payment_modules->after_process(); $cart->reset(true); // unregister session variables used during checkout tep_session_unregister('sendto'); tep_session_unregister('billto'); tep_session_unregister('shipping'); tep_session_unregister('payment'); tep_session_unregister('comments'); tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL')); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> I like the html option but not sure where to go from here? Edited April 16, 2008 by adam777 Quote Link to comment Share on other sites More sharing options...
moziambic Posted April 22, 2008 Share Posted April 22, 2008 does this contribution allow customers the choice to select email type as html or text during registration and also does it work with product attributes? Quote Contributions I'm using: Updated Spiders.txt | Country State Selector To add more life to your site. Follow this link: http://addons.oscommerce.com/ Link to comment Share on other sites More sharing options...
Olof Larsson Posted April 27, 2008 Author Share Posted April 27, 2008 does this contribution allow customers the choice to select email type as html or text during registration and also does it work with product attributes? It does not allow customers the choice to select email type as html or text during registration. It works with product attributes. Quote Link to comment Share on other sites More sharing options...
ski2bbad Posted May 13, 2008 Share Posted May 13, 2008 Hello all. This is a great contribution and I want to thank Olof for sharing it with us. I have a simple question . . . . I'm using the Forest Green email and I was wondering if there is a way to make the Store Name, that appears on the green portion (header) of the email, to show as an image? (I'd like to use my store logo image instead of just the name of the store) Any help would be greatly appreciated. Thank you! :thumbsup: ski Quote Link to comment Share on other sites More sharing options...
ski2bbad Posted May 13, 2008 Share Posted May 13, 2008 I have a simple question . . . . I'm using the Forest Green email and I was wondering if there is a way to make the Store Name, that appears on the green portion (header) of the email, to show as an image? (I'd like to use my store logo image instead of just the name of the store) Never mind . . . . I figured it out on my own. ;) Thanks again for this great contribution. ski Quote Link to comment Share on other sites More sharing options...
mme Posted May 17, 2008 Share Posted May 17, 2008 hi I am trying to make it so that when the order status is updated a email is also sent to a person that packs my products and sends them to the customer. So I added the code in orders.php it sends the email but half of the varibles dont work like the customers address ect.. Here is the html code for the email: <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"> <style type="text/css"> TD{FONT-FAMILY:Verdana,Tahoma,Arial,"Sans Serif";FONT-SIZE:10pt} BODY{FONT-FAMILY:Verdana,Tahoma,Arial,"Sans Serif";FONT-SIZE:10pt} .style2 { font-size: 8pt; font-style: italic; } .style3 {font-size: 8pt} .style4 {color: #FFFFFF} .style5 {color: #000000} </style> </head> <body bgColor="#eeeeee"> <table cellSpacing="1" cellPadding="0" width="700" bgColor="#cccccc" border="0" align="center"><tr> <td bgcolor="white"> <table cellSpacing="0" cellPadding="15" width="100%"><tr><td> <table cellSpacing="0" cellPadding="0" width="100%" border="0"><tr> <td><img src="' . HTTP_SERVER . '/site/shop/includes/modules/UHtmlEmails/files/header.gif" alt="Header" border="0"></td> <td align="center"><div align="right"><img src="' . HTTP_SERVER . '/site/shop/includes/modules/UHtmlEmails/files/logo_shop.gif" alt="Logo" border="0"></div></td> </tr></table> <hr size="0" color="#CCCCCC"> <table cellspacing="0" cellpadding="10" width="100%"><tr><td><table cellspacing="0" cellpadding="10" width="100%"> <tr> <td> <p><span class="style2"><small>This is an automated email regarding order: '.$oID.'</small></span><br> </p> <p>Order Details:</p> <p><strong>Customer Name:</strong> '. $check_status['customers_name'] .'<br> <table width="86%" border="0"> <tr> <td width="79%" bgcolor="#333333"><strong><span class="style4">Customer Address: </span><br> </strong></td> <td width="3%" rowspan="2"> </td> <td width="18%" rowspan="2">Print Address</td> </tr> <tr> <td bgcolor="#CCCCCC">'. $check_status['delivery_street_address']. '<br> '. $check_status['street_address']. '<br> '. $check_status['suburb']. '<br> '. $check_status['city']. '<br> '. $check_status['postcode']. '<br> '. $check_status['state']. '<br> '. $check_status['country']. '</td> </tr> </table> <p> </p> <table width="550" border="0"> <tr bgcolor="#333333"> <td width="43%"><div align="center" class="style1 style4"><strong>Product</strong></div></td> <td width="18%"><div align="center" class="style1 style4"><strong>Quantity</strong></div></td> </tr>'; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { $html_ship_email .=' <tr bgcolor="#CCCCCC"> <td><div align="center" class="style1">' . $check_status[$i]["name"] . $html_ship_email_product_attributes[$i]. '</div></td> <td><div align="center" class="style1">' . $check_status[$i]["qty"].'</div></td> </tr>'; } $html_ship_email .=' </table> <p><br> <br> <br> </td> </tr></table></td></tr></table> <hr size="0" color="#CCCCCC"> <center> <br><small>© ' .$y. ' <a href="' . HTTP_SERVER . '" class="style5">' . STORE_NAME . '</a></small><br> </center></td></tr></table></td></tr></table> </body></html> Quote Link to comment Share on other sites More sharing options...
Olof Larsson Posted May 23, 2008 Author Share Posted May 23, 2008 Hi Mme, I do not know if I'm answering your question realy, cause I'm not sure I understand your problem completely. One thing I saw however is that you use CSS code in the header of the file. This will not work. If you would like to create a html email you should first make sure you know a bit about html emails. Here are some liks that might be interesting for you: http://www.xavierfrenette.com/articles/css...ort-in-webmail/ http://www.alistapart.com/articles/cssemail/ http://www.campaignmonitor.com/blog/archiv...e_to_css_1.html http://www.reachcustomersonline.com/conten...27.00/index.php As for the other problems with your email I do not know in wich file you include this file. I'm sure you can figure this problem out yourself. Good luck :) Quote Link to comment Share on other sites More sharing options...
Benjjj6 Posted July 5, 2008 Share Posted July 5, 2008 Hi Olof, Would it be possible for you to modify this contribution so that when I click 'Invoice' from the Orders section on the Admin side of my site it would show one of these HTML email templates instead of the boring standard OsCommerce invoice? Thanks! Quote Link to comment Share on other sites More sharing options...
Guest Posted July 8, 2008 Share Posted July 8, 2008 Thanks for the contrib Olof... I have yet to install it but it appears to be just what one of our customer's needs. Question for you though, is the uhtml newsletter contribution able to have emails throttled? We have some customers with tens of thousands of email subscribers who would get black listed by their ISP's if they sent out that many newsletters at the same time. Any insight is appreciated. Quote Link to comment Share on other sites More sharing options...
smokey988 Posted July 14, 2008 Share Posted July 14, 2008 Has anyone got this to work with paypal for the newer version of ipn? I have it working on everything except on paypal orders. It still shows up as normal text on them. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.