Вы действительно не хотите использовать оболочку MAPI C #. В тестировании все будет хорошо, но, поскольку .NET и dll MAPI время от времени управляют собственной памятью (читай 300 пользователей, много раз в час), они перезаписывают пулы памяти друг друга.
В итоге мы написали приложение VB6, которое приняло аргумент файла с тем, что мы хотели отправить, а затем написали файл на c # и назвали приложение vb6. Это работает, поскольку они являются отдельными процессами и, следовательно, не перезаписывают пулы памяти друг друга.
Мой совет вам не идти по маршруту mapi (если вы не испытываете боль) и, если возможно, использовать EWS (мы не можем этого сделать из-за того, что компания не хочет обновляться).