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 :

[C#] libération de la ressource 'pièce jointe' d'un mail


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut [C#] libération de la ressource 'pièce jointe' d'un mail
    Salut,

    Dans mon service Windows, je dois envoyer un mail avec un fichier en pièce jointe puis supprimer le fichier pièce jointe.

    J'arrive à envoyer le mail avec cette fonction :

    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
    public static void SendMailWithAttachment(string expediteur, string destinataire, string subject, string body, string attachment, string serverSMTP, int priority, bool html)
            {
     
                MailAddress from = new MailAddress(expediteur);
                MailAddress to = new MailAddress(destinataire);
                MailMessage message = new MailMessage(expediteur, destinataire);
     
                Attachment data = new Attachment(attachment);
                message.Attachments.Add(data);
     
                message.Subject = subject;
                message.Body = body;
                message.Priority = DefineMailPriority(priority);
                if (html == true)
                {
                    message.IsBodyHtml = true;
                }
     
                SmtpClient client = new SmtpClient(serverSMTP);
                client.UseDefaultCredentials = true;
                client.Send(message);
     
            }

    mais je n'arrive pas à supprimer la pièce jointe par la suite..
    Je pense que c'est dû à une exception du genre accès interdit au fichier car il est utilisé ailleurs.
    Je n'arrive même pas à supprimer le fichier à la main tant que mon service tourne.


    Vu que quand je supprime l'envoi du mail avec pièce jointe, le fichier est supprimé sans problèmes, j'en déduis que c'est cet envoi du mail qui pose problème.


    Donc ma question :
    Est ce que j'oublie de libérer une ressource après l'envoi de mon mail ?
    Si oui comment on la libère ?

    Merci de votre aide.



    Johann

  2. #2
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    As-tu essayé de faire des dispose() sur message et data avant de supprimer la pièce ?

    ou bien un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.ContentStream.Close();

  3. #3
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Oui c'était ça.
    Il fallait que je fasse des Dispose().


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ....
     
    client.Send(message);
     
    // libération des ressources
     message.Dispose();
     data.Dispose();

    Merci de ton aide

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    MailMessage et Attachment sont des classes qui implémentent IDisposable. Il est donc conseillé de les utiliser dans des blocs using afin d'être sûr que toutes les ressources soient libérées à la fin.

  5. #5
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Qu'entends tu par blocs usings ?
    Des try/catch/finally ?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    fais une recherche sur using + dispose.
    Tu auras toutes les réponses dont tu as besoin.

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

Discussions similaires

  1. [Indy] Comment récupérer les pièces jointes d'un mail ?
    Par dj_lil dans le forum Web & réseau
    Réponses: 6
    Dernier message: 01/04/2011, 19h07
  2. récupérer les pièces jointes d'un mail [Outlook Express]
    Par chrisledeveloppeur2 dans le forum Delphi
    Réponses: 2
    Dernier message: 10/01/2007, 08h57
  3. [Mail] Récupérer une pièce jointe d'un mail
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2005, 16h21
  4. Encodage des pièces jointes d'un mail : toujours base64 ?
    Par Michaël dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 15/10/2005, 12h34
  5. Ajouter des pièces pièces jointes à un message Mail
    Par skywaukers dans le forum Web & réseau
    Réponses: 4
    Dernier message: 05/10/2005, 10h00

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