I assume you have workflow behind this InfoPath form that will send the email...?
If you do, then I would suggest that you submit the form normally (not populating the SmartObject yet), then have your first event be a Server Event. In the server event open the XML document, loop through the xml schema, and after each loop do your insert in to the SmartObject.
The code to do this can be found in K2 Underground. Essentially your Server Event reads from the XML and writes to the SmartObject, and the Mail event then reads from your SmartObject. Your mail event may also need to loop through the SmartObject. If this is the case, then create another Server Event, a Process DataField for a counter and loop between the Server Event (separate server event to the one mentioned previously) and the Mail Event.