Avatar billede mjlb Nybegynder
29. juli 2008 - 12:26 Der er 5 kommentarer og
1 løsning

MailAttachment problem

Jeg arbejder på en formular hvor folk kan indtaste deres data og derefter sende den afsted til en email. Formularen skal indholde en attachment funktion så folk kan sende billeder eller andet med. Alt sammen virker okay når man udfylder felterne og vedhæfter en fil. Problemet opstår hvis man IKKE vedhæfter en fil, så kommer der en fejl.

Koden:

    private void SendMail(string from, string to_, string subject, string body)
    {

            MailMessage printMail = new MailMessage();
            printMail.From = from;
            printMail.To = to_;
            printMail.Subject = subject;
            printMail.Body = body;
            printMail.BodyFormat = MailFormat.Html;

        ///Her starter attachment

            string strdir = "D:\\temp\\";
            string strfilename =
                Path.GetFileName(txtFile.PostedFile.FileName);
            txtFile.PostedFile.SaveAs(strdir + strfilename);
            printMail.Attachments.Add(new MailAttachment(strdir + strfilename));
        ///Slutter her

            try
            {
                SmtpMail.Send(printMail);
            }
            catch (Exception exc)
            {
                Response.Write(exc.ToString());
            }
        ///Sletter filen fra serveren igen
            File.Delete(strdir + strfilename);
    }

Det som der sker er at filen bliver midlertidigt lagt op på serveren og så slettet igen. Men når man vælger ikke at vedhæfte en fil så går det i kage.

Kan man skrive en if sætning eller lignende som gør at den springer vedhæftningen over hvis den er lig med ingenting?

Alt hjælp er kærkommen da jeg ikke er specielt skarp til c#

formular feltet ser således ud:

<input type="file" id="txtFile" name="txtFile" runat="server" />
Avatar billede brokov Nybegynder
29. juli 2008 - 12:48 #1
Du kunne jo prøve med:

if( (strfilename != null) or (strfilename != "") )
{
  txtFile.PostedFile.SaveAs(strdir + strfilename);
  printMail.Attachments.Add(new MailAttachment(strdir + strfilename));
}

Jeg er ikke sikker, men det er hvad jeg ville prøve med. Hvis filnavnet der returneres ikke er null eller en tom streng, skal koden inde i løkken køres, ellers springes det over.
Avatar billede mjlb Nybegynder
29. juli 2008 - 12:48 #2
Nå det ligemeget alligevel. efter at have kæmpet hele dagen for en løsning finder jeg den 5 min. efter jeg opretter dette indlæg hehe
Avatar billede mjlb Nybegynder
29. juli 2008 - 12:49 #3
ved ikke om det hjælper eller ej da jeg har fikset det.. men du får point hvis du svarer :)
Avatar billede brokov Nybegynder
29. juli 2008 - 13:10 #4
Skidt pyt med de point, du har jo selv løst det.
Men det kunne måske hjælpe andre senere, hvis du kort kunne beskrive hvordan du fiksede det. :-)
Avatar billede mjlb Nybegynder
29. juli 2008 - 17:24 #5
okay men tusind tak alligevel :) jeg smider koden op imorgen når jeg kommer på arbejde..
Avatar billede mjlb Nybegynder
31. juli 2008 - 13:03 #6
Her er løsningen så.. jeg kombinerede det med noget at kode jeg fandt her på eksperten ;)

    private void SendMail(string from, string to_, string subject, string body)
    {

            MailMessage printMail = new MailMessage();
            printMail.From = from;
            printMail.To = to_;
            printMail.Subject = subject;
            printMail.Body = body;
            printMail.BodyFormat = MailFormat.Html;
            String StrFileName = "";

            StrFileName = Request.Files["fileAttachment"].FileName;
            if (StrFileName != "")
            {

                StrFileName = StrFileName.Substring(StrFileName.LastIndexOf("\\") + 1);

                Request.Files["fileAttachment"].SaveAs(Server.MapPath(StrFileName));

                MailAttachment MyAttachment = new MailAttachment(Server.MapPath(StrFileName));
                printMail.Attachments.Add(MyAttachment);
            }



       
            try
            {
                SmtpMail.Send(printMail);
            }
            catch (Exception exc)
            {
                Response.Write(exc.ToString());
            }
            if (StrFileName != "")
                File.Delete(Server.MapPath(StrFileName));
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester