fullpath = Application.WorksheetFunction.Index(xlWkb.Sheets("list").Range("E3:E870"), Application.WorksheetFunction.Match(recip, _
xlWkb.Sheets("list").Range("C3:C870"), 0), 1)
The glaring issue is that this code makes two references to 'Application'. This is fine when you run in Excel, but when you run in Outlook, 'Application' is the Outlook application. You need to change it to refer to the Excel application ' xlApp'. If the line runs in Excel, it should then work when run from Outlook, but I don't have your data file to test.
fullpath = xlApp.WorksheetFunction.Index(xlWkb.Sheets("list").Range("E3:E870"), xlApp.WorksheetFunction.Match(recip, _
xlWkb.Sheets("list").Range("C3:C870"), 0), 1)