468,769 Members | 1,856 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,769 developers. It's quick & easy.

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

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
2 4327
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
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.

Similar topics

2 posts views Thread by S_p_ike | last post: by
4 posts views Thread by Trond A. S. Andersen | last post: by
3 posts views Thread by Bart Stes | last post: by
3 posts views Thread by huan | last post: by
3 posts views Thread by Tim T | last post: by
10 posts views Thread by Brian Henry | last post: by
1 post views Thread by Sophie | last post: by
5 posts views Thread by RD | last post: by
reply views Thread by Marin | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.