2010-04-21 3 views
4

Я пытаюсь написать proc, который будет принимать в качестве параметра объект MailMessage и разделить его на части для хранения объекта, тела, адресов, адресов, и вложения (жесткая часть) в базе данных, поэтому электронное письмо может быть отправлено в какой-то момент в будущем.Есть ли способ сериализации объекта .Net MailMessage

Мое первое взятие на этом заключалось в том, чтобы вырвать нужные мне детали и сохранить их в базе данных, и это отлично работает, за исключением вложений. Я не могу понять, как пройти через коллекцию, а затем на самом деле что-то делать с ними.

Это простой способ сериализации объекта MailMessage, который фактически будет использовать содержимое вложений с ним?

Я делаю это все неправильно? Кто-нибудь делал это раньше?

+0

См. [Мой ответ] [1], с кодом на C#. [1]: http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as-eml-or-msg-file/23923458#23923458 – saille

ответ

0

Если бы мне пришлось угадать стратегию, которую я бы использовал, это было бы для каждого вложения превратить это в массив байтов, а затем поместить эти байтовые массивы и детали сообщения в XML-документ, а затем передать этот XML-документ в базу данных как параметр.

+0

Спасибо за совет. Неплохая идея, но я больше ищу способ получить файл из фактической коллекции вложений, так что нам не нужно изменять ни одну из существующих кодов. Ну, только изменение, с которым я в порядке, сейчас заменяет «smtp.Send (msg)»; с "MyClass.Send (msg);" и метод MyClass.Send фактически сохранит эту информацию в базе данных, а не отправит ее. Затем серверный процесс просыпался каждые 10 минут и фактически отправлял электронную почту. –

1

Действительно, это не очень хороший способ сделать это. Итак, я продолжил свой первоначальный метод циклирования через объект MailMessage и получения всей информации, о которой я заботился. Для приложений, которые были самой сложной частью, каждое приложение имеет ContentStream, и я просто прочитал этот поток и записал его на диск, сохранил имя файла, а затем я могу его воссоздать, когда хочу его отправить.

Я не полностью протестировал этот метод, поэтому я пока не рекомендую его кому-либо еще, но он кажется лучшим решением в нашем конкретном случае.

Смежные вопросы