IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

sauvegarde d'un object MailMessage dans un DB


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut sauvegarde d'un object MailMessage dans un DB
    Bonjour,

    Pour des questions de fiabilité, j'aimerais sauvegarder mon object System.Web.Mail.MailMessage dans une base de donnée pour faire un envois différé.

    C'est possible ?

    à l'époque j'avais fait un truc comme ça en java simplement en serializant l'object, mais j'ai pas trouvé comment faire avec Dotnet C# ... une idée ?

    merci pour vos réponses
    Rdemont

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    le principe est toujours le meme et utilisable là.

    Soit tu sauvegarde toi meme les données du mail car a priori tu les connais, soit tu "sérialize" l'objet et le sauvegarde.

    Maintenant le probleme reste à savoir comment tu souhaite sauvegardé dans la base de données et surtout la structure des mails, et la quantité d'informations qu'ils représentent (par mails... pas au total)

    Tu as deux voies s'ouvrant à toi...
    La sérialisation XML de l'objet et stockage du flux XML dans la base.
    ou la sérialisation binaire et sauvegarde du flux binaire dans la base.

    La sérialisation binaire est plus rapide mais moins pratique à manipuler que la sérialisation XML. Elle prend également beaucoup moins de place surtout si les mails sont supposés être "gros" et dans ce cas très adapté surtout si les mails ont des images embarqués.

    Si en revanche tes mails sont simples, ou format html sans image "embarqués" mais sous forme d'url vers un lien externe, tu peux exploiter la sérialisation/déserialisation XML.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut
    Salut cinemania,
    Merci pour ta réponse.

    J'ai pas les codes sources de ce truc sous les yeux actuellement je suis dans un autre boulot pour le journée.

    Mais de mémoire je fais de la sérialisation binaire pour le mettre dans une DB. Simplement j'ai une erreur car la classe MailMessage n'est pas [Serializable].

    sinon bien sur que je peut mettre séparément toutes les données du mail mais c'est quand même bien plus simple de sauver l'objet direct dans la db et pas chaque propriété

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Pour une sérialization Xml il n'est pas indispensable que l'objet soit sérialisable. La sérialisation Xml fonctionne en introspectant l'ensemble des propriétés publiques disposant d'accesseurs get ET set, et sauve les valeurs associées à ces propriétés.

    A la désérialisation, on procède de maniére inverse, en appelant les setters avec les valeurs sauvegardées.

    Il est aussi possible d'écrire son propre sérialiseur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut
    Voilà ce que j'ai fait et qui ne fonctionne pas, vraisemblablement, parce que MailMessage n'est pas [Serializable]. Si quelqu'un à une idée comment rendre MailMessage [Serializable] ce serait volontiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        public Byte[] SerializeMail(MailMessage mail)
        {
            Stream stream = new MemoryStream();
            BinaryReader binaryReader = new BinaryReader(stream);
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            binaryFormatter.Serialize(stream, mail);
            Byte[] result = new Byte[stream.Length];
            stream.Seek(0, 0);
     
            return binaryReader.ReadBytes(int.Parse(binaryReader.BaseStream.Length.ToString()));
        }
        public MailMessage DeserializeMail(Byte[] mailObj)
        {
            MailMessage mail = new MailMessage();
     
            Stream stream = new MemoryStream(mailObj);
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            mail = (MailMessage)binaryFormatter.Deserialize(stream);
            return mail;
        }
    Merci et bonne soirée
    Rdemont

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    soit tu hérite de MailMessage et rend l'héritière Serializable en définissant toi meme les modeles de serialisation....

    Soit tu utilise une serialisation XML qui ne nécessite pas que l'objet soit serialisable.
    puisque tu serialise les propriétés get/set de l'objet et reconstruit l'objet de la meme facon en sens inverse en utilisant les set...
    soit tu le fait manuellement soit le systeme peut le faire.

Discussions similaires

  1. object file dans un vecteur
    Par chti_juanito dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 09/05/2006, 09h42
  2. [MySQL] Sauvegarde de base de données dans un fichier
    Par navis84 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/04/2006, 11h41
  3. Sauvegarder une mise en forme dans une RichTextBox
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/12/2005, 12h19
  4. [JDBC]sauvegarde de session servlet/jsp dans une bd
    Par sheura dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/09/2005, 09h37
  5. [Stratégie]Sauvegarde d'une liste chainée dans un fichier
    Par BernardT dans le forum Général Java
    Réponses: 17
    Dernier message: 25/07/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo