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 :

MailAttachment avec un blob oracle


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Par défaut MailAttachment avec un blob oracle
    Bonjour à tous,

    je travaille en .net 2.0 Csharp et j'ai réalisé un web service avec une fonction qui envoie des mails automatiquement.

    J'ai besoin d'attacher des fichiers, je pensais donc utiliser cette classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailAttachment att =  new MailAttachment("pathFile.txt");
    le problème c'est que cette classe ne prend en arguments que des chemins de fichiers; or les fichiers que je veux joindre sont stockés dans une base Oracle dans un champ blob

    Comment faut il faire ?

    Récupérer le blob et l'enregistrer sur le disque dur pour pouvoir ensuite l'attacher ?
    MailAttachment ne prend pas de flux binaire?

    Merci pour votre aide car je suis perdu

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lenoil Voir le message
    MailAttachment ne prend pas de flux binaire?
    Visiblement, non.

    Par contre, les classes du namespace System.Web.Mail sont dépréciées depuis longtemps (.NET 2)... Il faut utiliser celles de System.Net.Mail, comme expliqué dans cet article. Et d'ailleurs ça tombe bien, parce que dans la nouvelle API les pièces jointes sont représentées par la classe Attachment, qui accepte les flux binaires

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Par défaut
    merci pour ta réponse

    mais pour ce projet je devais travailler en .net 2.0 et là il faut apparemment le Framework 4.0 donc je vais voie

    en tout cas merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lenoil Voir le message
    et là il faut apparemment le Framework 4.0
    Non, pas du tout ! Le namespace System.Net.Mail existe depuis .NET 2.0

    Citation Envoyé par MSDN
    Informations de version
    .NET Framework
    Pris en charge dans : 4, 3.5, 3.0, 2.0
    .NET Framework Client Profile
    Pris en charge dans : 4, 3.5 SP1

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Par défaut
    Ok merci

    j'ai fait un test et cela fonctionne

    Par contre, j'arrive pas à joindre mon fichier qui est un stream (blob oracle)
    J'ai un fichier joint mais vide 0 octets !
    Je dois mal lire mon flux je suppose ...

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    ....
     
    command = new OleDbCommand(strSqlFileAttachment, m_dbConnection);
                OleDbDataReader ioReader = command.ExecuteReader(CommandBehavior.SequentialAccess);
                byte[] ioBuffer = null;
                long lnRealLength = 0;
                System.IO.MemoryStream loStream = null;
     
                loStream = new System.IO.MemoryStream();
     
     
                //read actual value from field
                while (ioReader.Read())
                {
                  //Get actual length of data in bytes
                  lnRealLength = ioReader.GetBytes(2, 0, null, 0, int.MaxValue);
     
     
     
                  //Reallocate storage space for an array variable to the
                  //size of data
                  ioBuffer = new Byte[lnRealLength + 2];
     
                  //Load data from field into array
                  lnRealLength = ioReader.GetBytes(2, 0, ioBuffer, 0, Convert.ToInt32(lnRealLength));
     
                  loStream.Write(ioBuffer, 0, Convert.ToInt32(lnRealLength));
     
                  Attachment attach = new Attachment(loStream, "test.jpg");
                  mail.Attachments.Add(attach);
     
     
     
                }

    As tu une idée ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il faut "rembobiner" ton MemoryStream avant de le passer en pièce jointe :


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. oracle plus lent que mysql avec des blobs
    Par ZashOne dans le forum Administration
    Réponses: 4
    Dernier message: 26/03/2009, 15h54
  2. [Interbase] Pb avec les blobs et les images !!
    Par Mike91 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/01/2006, 11h27
  3. [Jdbc] Blob Oracle Mysql
    Par spiritusss dans le forum JDBC
    Réponses: 2
    Dernier message: 25/11/2005, 14h01
  4. Créer du xml avec des données Oracle
    Par Baumont dans le forum Oracle
    Réponses: 3
    Dernier message: 23/11/2005, 15h35
  5. Ecrire dans un fichier avec PL/SQL (oracle)
    Par Titouf dans le forum PL/SQL
    Réponses: 3
    Dernier message: 02/10/2005, 06h36

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