By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,494 Members | 898 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,494 IT Pros & Developers. It's quick & easy.

Problem with difference between System.Web.Mail and System.Net.Mail in using attachments

P: n/a
I have a web .Net app which sends emails with attachments. After the email
is sent I clean up aftermyself and delete the attachments from disk. In
upgrading to .Net 2 I changed the email logic from using system.web.mail to
system.net.mail (of course vs is telling me system.web.mail is obsolete).
In .Net 1.1, the files deleted with no problem but in .Net 2 when I attempt
to delete I receive

The process cannot access the file ...' because it is being used by another
process.

If I change the code back to using system.web.mail I can delete the files.
So it would appear that something about the mail object, using
system.net.mail, keeps the file in use. I found the same is true if I
attempt to overwrite the files using something like File.Copy(from,to,
true). Why in .Net 2 would the disk files still be in use...or at least
how can they be released?

Below is snip of code, both the 1.1 and 2.0 version.

..Net 1.1 code
============================
Dim mailObj As New System.Web.Mail.MailMessage()
With mailObj
.From = fromName
.To = toName
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.BodyFormat = Mail.MailFormat.Html
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment1Name))
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment2Name))

End With

System.Web.Mail.SmtpMail.SmtpServer = server
System.Web.Mail.SmtpMail.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)
========================================
..Net 2.0 code
========================================
Dim mailObj As New MailMessage(fromName, toName)
With mailObj
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.IsBodyHtml = True
.Attachments.Add(New Attachment(attachment1Name))
.Attachments.Add(New Attachment(attachment2Name))

End With

Dim mailserver As New SmtpClient(server)
mailserver.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)


- Brad
Apr 25 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
mailObj.Dispose() Releases it.

SA
"Brad" <la**@newsgroup.nospam> wrote in message
news:OX**************@TK2MSFTNGP05.phx.gbl...
I have a web .Net app which sends emails with attachments. After the email
is sent I clean up aftermyself and delete the attachments from disk. In
upgrading to .Net 2 I changed the email logic from using system.web.mail
to
system.net.mail (of course vs is telling me system.web.mail is obsolete).
In .Net 1.1, the files deleted with no problem but in .Net 2 when I
attempt
to delete I receive

The process cannot access the file ...' because it is being used by
another
process.

If I change the code back to using system.web.mail I can delete the files.
So it would appear that something about the mail object, using
system.net.mail, keeps the file in use. I found the same is true if I
attempt to overwrite the files using something like File.Copy(from,to,
true). Why in .Net 2 would the disk files still be in use...or at least
how can they be released?

Below is snip of code, both the 1.1 and 2.0 version.

.Net 1.1 code
============================
Dim mailObj As New System.Web.Mail.MailMessage()
With mailObj
.From = fromName
.To = toName
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.BodyFormat = Mail.MailFormat.Html
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment1Name))
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment2Name))

End With

System.Web.Mail.SmtpMail.SmtpServer = server
System.Web.Mail.SmtpMail.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)
========================================
.Net 2.0 code
========================================
Dim mailObj As New MailMessage(fromName, toName)
With mailObj
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.IsBodyHtml = True
.Attachments.Add(New Attachment(attachment1Name))
.Attachments.Add(New Attachment(attachment2Name))

End With

Dim mailserver As New SmtpClient(server)
mailserver.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)


- Brad

Apr 25 '06 #2

P: n/a
It most certainly does, thank you very much.
"MSDN" <sq**********@hotmail.com> wrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
mailObj.Dispose() Releases it.

SA
"Brad" <la**@newsgroup.nospam> wrote in message
news:OX**************@TK2MSFTNGP05.phx.gbl...
I have a web .Net app which sends emails with attachments. After the email
is sent I clean up aftermyself and delete the attachments from disk. In
upgrading to .Net 2 I changed the email logic from using system.web.mail
to
system.net.mail (of course vs is telling me system.web.mail is obsolete).
In .Net 1.1, the files deleted with no problem but in .Net 2 when I
attempt
to delete I receive

The process cannot access the file ...' because it is being used by
another
process.

If I change the code back to using system.web.mail I can delete the files.
So it would appear that something about the mail object, using
system.net.mail, keeps the file in use. I found the same is true if I
attempt to overwrite the files using something like File.Copy(from,to,
true). Why in .Net 2 would the disk files still be in use...or at least
how can they be released?

Below is snip of code, both the 1.1 and 2.0 version.

.Net 1.1 code
============================
Dim mailObj As New System.Web.Mail.MailMessage()
With mailObj
.From = fromName
.To = toName
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.BodyFormat = Mail.MailFormat.Html
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment1Name))
.Attachments.Add(New
System.Web.Mail.MailAttachment(attachment2Name))

End With

System.Web.Mail.SmtpMail.SmtpServer = server
System.Web.Mail.SmtpMail.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)
========================================
.Net 2.0 code
========================================
Dim mailObj As New MailMessage(fromName, toName)
With mailObj
.Body = body.ToString
.Priority = MailPriority.High
.Subject = "Test"
.IsBodyHtml = True
.Attachments.Add(New Attachment(attachment1Name))
.Attachments.Add(New Attachment(attachment2Name))

End With

Dim mailserver As New SmtpClient(server)
mailserver.Send(mailObj)

File.Delete(attachment1Name)
File.Delete(attachment2Name)


- Brad


Apr 25 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.