You could try this:
Find the lines in the order.php class that say this (around 845):
Code:
//------eof: insert customer-chosen options ----
// update totals counters
insert custom code between those two lines, like this:
Code:
//------eof: insert customer-chosen options ----
// START: ADD MY CUSTOM DETAILS
$my_custom_data = $db->Execute("SELECT product_link, product_password from " . TABLE_PRODUCTS . " where products_id = '" . zen_get_prid($this->products[$i]['id']) . "'");
$this->products_ordered_attributes .= "\n\t" . 'Download Link: ' . $my_custom_data->fields['product_link'] . "\n\t" . 'Password: ' . $my_custom_data->fields['product_password'];
// END: ADD MY CUSTOM DETAILS
// update totals counters
The assumption in the above example was that your new fields are in the "products" table and named "product_link" and "product_password".
The details will be added to individual product line-items in the emails as part of the normal attribute information details.
Another approach has also been discussed in this thread:
http://www.zen-cart.com/forum/showthread.php?p=408334