Все, что вы передаете службе WCF, должно быть сериализуемым в XML или двоичном формате.
«Классический» подход к обмену сообщениями:
- Создайте простой класс DataContract, который имеет все необходимые свойства MailMessage
- Перед вызовом службы установите все свойства для MailMessage в новом экземпляре вашего класса DataContract
- Позвоните в сервис, передав DataContract
- Внутри службы создайте новый экземпляр MailMessage и присвойте ему свойства, затем отправьте его