Solved

Email attachments - even after dispose no release?

Posted on 2010-08-15
2
340 Views
Last Modified: 2013-12-17
in C# I have 6 attachments for emails going out.. 3 are built in crystal 3 are static handouts..
With both types after the run the pdf's can SOMETIMES not be able to be deleted or moved because someone has it open.. I made sure Crystal is closing & disposing at it's end, but I am sure it is the Attachment due to the fact the 3 static PDF's can also get locked.. After 15/30 minutes the resources unlock.. so sounds like a dispose problem.. But.. I dispose on the finally process of a try so if it aborts, it still should dispose.

Below is the code, attempting to abbrevate where not really part of attachment logic.




using System.Net.Mail;

:

:

    Attachment attachmentmsg1;

    Attachment attachmentmsg2;

    Attachment attachmentmsg3;

    Attachment attachmentmsg4;

    Attachment attachmentmsg5;

    Attachment attachmentmsg6;

:

:

        try

        {

            mMailMessage = new MailMessage();

            // Set the sender address of the mail message

            mMailMessage.From = new MailAddress("someone@comcast.net");



:

:

                SetAttachments();

                PrintBody();

:

:

                mMailMessage.Body = fullBody;



:               // Instantiate a new instance of SmtpClient

                SmtpClient mSmtpClient = new SmtpClient("smtp.comcast.net");

                // Send the mail message

                mSmtpClient.Send(mMailMessage);

                mSmtpClient = null;

            }



        }

        catch (Exception)

        {



            throw;

        }

        finally

        {

            attachmentmsg1.Dispose();

            attachmentmsg2.Dispose();

            attachmentmsg3.Dispose();

            attachmentmsg4.Dispose();

            attachmentmsg5.Dispose();

            attachmentmsg6.Dispose();

        }

    private void SetAttachments()

    {

       string strReportPath =  strAppPath + "Reports\\EmailRptPerUnit.rpt";

       string strReportPath2 = strAppPath + "Reports\\EmailRptUnitIndv.rpt";

        string UT = sglUnitInfo.UnitType.Trim();

        string UN = sglUnitInfo.UnitNo.Trim();

        string UnitRpt = PathForUnitAttachments + UT + UN + "UnitRpt.pdf";

        string IndvRpt = PathForUnitAttachments + UT + UN + "IndivRpt.pdf";

        string IndvRpt2 = PathForUnitAttachments + UT + UN + "IndivRpt.doc";

        string ReqTrains = PathForHandouts + "BasicLdrRequirements.pdf";

        string MissingForm = PathForHandouts + "FormForMissingCourses.pdf";

        string ProblemTracking = PathForHandouts + "GuideToTrackingProblems.pdf";

        try

        {

            dsUnitUntrained dsUT = new dsUnitUntrained();

            dsUnitCourses dsCo = new dsUnitCourses();



            crPdf.CreateEnglishPdf(strReportPath, UnitRpt, UT, UN, "CR_Email_Untrained", dsUT,"PDF");

            crPdf.CreateEnglishPdf(strReportPath2, IndvRpt, UT, UN, "CR_Email_Untrained", dsUT, "PDF");

            crPdf.CreateEnglishPdf(strReportPath2, IndvRpt2, UT, UN, "CR_Email_Untrained", dsUT, "doc");



            attachmentmsg1 = new Attachment(UnitRpt);

            mMailMessage.Attachments.Add(attachmentmsg1);

            attachmentmsg2 = new Attachment(IndvRpt);

            mMailMessage.Attachments.Add(attachmentmsg2);

            attachmentmsg3 = new Attachment(IndvRpt2);

            mMailMessage.Attachments.Add(attachmentmsg3);

            attachmentmsg4 = new Attachment(ReqTrains);

            mMailMessage.Attachments.Add(attachmentmsg4);

            attachmentmsg5 = new Attachment(MissingForm);

            mMailMessage.Attachments.Add(attachmentmsg5);

            attachmentmsg6 = new Attachment(ProblemTracking);

            mMailMessage.Attachments.Add(attachmentmsg6);



        }

        catch (Exception)

        {

            

            throw;

        }

    }

Open in new window

0
Comment
Question by:moosetracker
2 Comments
 
LVL 20

Accepted Solution

by:
informaniac earned 500 total points
ID: 33440622
Dispose the mailMessage object also
0
 
LVL 1

Author Closing Comment

by:moosetracker
ID: 33440708
You are brilliently correct... I could of swore I checked that for close and/or dispose, and neither was present for that object..
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Paging GridView 7 34
Library to convert HTML to PDF. 8 46
Expando 4 36
Open a word document 23 20
Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
This video discusses moving either the default database or any database to a new volume.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now