Solved

Email attachments - even after dispose no release?

Posted on 2010-08-15
2
341 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

920 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