Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Supprimer pièce jointe

Après l'envoi d'un courriel

    30 juin 2011 à 14:47:57

    Salut!

    J'aimerais une petite aide simple que je n'arrive pas à trouver sur internet(en fait, c'est ça qui est bizarre :lol: )

    Tout ce que je fais, c'est lors du clic sur un bouton dans un formulaire, j'envoie un e-mail à une personne X avec une pièce jointe. Je suis capable d'ajouter une pièce jointe, cependant elle reste en mémoire sur le serveur. J'aimerais savoir comment supprimer le fichier. Je vais mettre le code et éclaircir le problème après.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.Web.Mail; //Pour l'envoi de e-mail.
    
    protected void Button1_Click(object sender, EventArgs e)
        {
            //Bouton Envoyer 
    
            MailMessage email = new MailMessage();
            email.From = txt_email.Text;
            email.To = "email@hotmail.com";
            email.Subject = "Sujet X";
    
            email.Body = "Avec un texte X";
    
            email.Priority = MailPriority.High;
    
            HttpPostedFile attach = txt_file.PostedFile;
            int attachLength = attach.ContentLength;
    
            string str_FileName = txt_file.PostedFile.FileName;
            txt_file.PostedFile.SaveAs(Server.MapPath(str_FileName)); //Enregistre le fichier sur le serveur
            MailAttachment attachment = new MailAttachment(Server.MapPath(str_FileName));
    
            if (attachLength > 0)
                email.Attachments.Add(attachment);
    
            SmtpMail.SmtpServer = "mail.cdid.com";
    
            try
            {
                lbl_erreur.Visible = false;
    
                SmtpMail.Send(email);
                Server.Transfer("/en/Confirm.aspx");
            }
            catch (Exception ex)
            {
                lbl_erreur.Visible = true;
                lbl_erreur.Text = ex.Message;
            }
    
            //email.Dispose();
            //File.Delete(Server.MapPath(str_FileName));
        }
    


    J'utilise System.Web.Mail, et sur internet ils disent toujours d'utiliser la fonction .dispose ou File.Delete(), cependant ces fonctions ne sont pas reconnu de System.Web.Mail.

    Connaissez-vous une alternative?

    Merci beaucoup!
    • Partager sur Facebook
    • Partager sur Twitter
      30 juin 2011 à 15:08:27

      Salut,

      Normal que tu ne trouves pas File.Delete sous System.Web.Mail. File fait partit de System.IO. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        30 juin 2011 à 15:22:51

        Maintenant, il reconnait File.Delete, mais je viens de remarquer que c'est txt_file.PostedFile.SaveAs(Server.MapPath(str_FileName)); qui pose problème. Il donne l'exception :
        System.Web.HttpException: 'MonChemin' is a physical path, but a virtual path was expected.

        MonChemin représente le vrai chemin, mais je ne peux pas le montrer pour confidentialité.
        Qu'est que cela veut dire chemin virtuel?

        EDIT :
        PS: Il le sauvegarde pareil dans le répertoire.
        • Partager sur Facebook
        • Partager sur Twitter

        [C#] Supprimer pièce jointe

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown