2016-11-01 7 views
0

Я реализую логику отправки электронной почты. Вот что я собираюсь делать.System.Net.Mail.MailMessage Загрузка из строки

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

Строка будет взята из метода MailMessge.ToString().

Теперь моя проблема: я не вижу способа вернуть объект MailMessage из сохраненной строки. Я не уверен, поддерживается ли это классом MailMessage.

Моим вторым вариантом является сохранение необработанных данных в таблице в очереди (до, тема, тело и т. Д.) И создание объекта MailMessage во время отправки. Я бы предпочел первый вариант, потому что он выглядит намного опрятно.

Если кто-то знает, как достичь этого, пожалуйста, дайте мне знать.

Спасибо заранее, Wijitha

+1

'MailMessage.ToString()' не собирается преобразовать объект в строку, то вы можете использовать, чтобы восстановить его позже. Процесс, который * делает *, делает это (более или менее), называется * Сериализация *, и нет встроенного способа сделать это для 'MailMessage'. Сохранение всех деталей сообщения индивидуально в вашей таблице db на самом деле намного приятнее, его тривиально, чтобы прочитать его и построить объект, установив соответствующие свойства, и у вас есть хорошая, доступная для просмотра, редактируемая запись сообщения. –

+0

Спасибо, Алекс, да, ваше право. Я продолжу вариант 2. – Wijitha

ответ

1
  1. MailMessage.ToString() не вариант.

  2. Для хранения любого объекта в базе данных или файле Класс должен быть помечен с помощью Serializable, но, к сожалению, в случае MailMessage он не помечен атрибутом Serializable.

  3. Значит, вам нужно пойти на второй вариант.

Если вы не хотите идти на второй вариант, то сделайте Сериализуемую версию класса MailMessage, которая поможет вам хранить данные в базе данных. Позже вы возвращаете этот объект и конвертируете в mailmessage и отправляете по электронной почте.

https://github.com/keyvan/Gopi/blob/master/Gopi/Gopi/SerializableMailMessage.cs

+0

Спасибо за ваш ответ, он очистил мои проблемы. Пойдет с Вариантом 2. Используя Chilkat API, я уже реализовал вариант 1 в другом проекте. Я думал .Net также есть способ сделать это. – Wijitha

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