472,328 Members | 1,651 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,328 software developers and data experts.

SMTP won't send until thread terminates

Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application (hence
terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous way
so the calling thread isn't blocked. This is when I added the 2nd sub below

All the code still works but again, it does not send the email unless I exit
the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or .send()
?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority As
System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub
May 6 '06 #1
6 1909
Just to add to what I already said.

I put it all in a class module to let it run in its own thread.

The same thing happens. Ie it won't send the email until I terminate the
application.

There are no errors, it's buffering it somewhere but I'm just so confused
where and how. I haven't setup any buffering, it should send ASAP.

Adam

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:eA*************@TK2MSFTNGP04.phx.gbl...
Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application (hence
terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous
way so the calling thread isn't blocked. This is when I added the 2nd sub
below

All the code still works but again, it does not send the email unless I
exit the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or .send()
?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority
As System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub

May 6 '06 #2
Further to the above.

Sometimes it will send immediately.

Sometimes it won't until I exit the app.

Obviously something somewhere isn't get priority. The UI in the main thread
blocking the SMTP System.net.mail classes? Doubtful but that's all I can
think up.

Adam

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:%2****************@TK2MSFTNGP04.phx.gbl...
Just to add to what I already said.

I put it all in a class module to let it run in its own thread.

The same thing happens. Ie it won't send the email until I terminate the
application.

There are no errors, it's buffering it somewhere but I'm just so confused
where and how. I haven't setup any buffering, it should send ASAP.

Adam

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:eA*************@TK2MSFTNGP04.phx.gbl...
Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application
(hence terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous
way so the calling thread isn't blocked. This is when I added the 2nd sub
below

All the code still works but again, it does not send the email unless I
exit the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or
.send() ?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority
As System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub


May 7 '06 #3
Dear Adam Honek

I have encountered the same situation.

I have noticed that my Email Virus Autoprotect is doing this. If I turn the
Autoprotect feature off, I have no problem in sending emails.

Mike TI

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:eA*************@TK2MSFTNGP04.phx.gbl...
Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application (hence
terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous
way so the calling thread isn't blocked. This is when I added the 2nd sub
below

All the code still works but again, it does not send the email unless I
exit the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or .send()
?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority
As System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub

May 7 '06 #4
Hmmm,

Norton Antivirus?

I have version 2006 and it's not wanting to turn off, just disable. If I
disable it the emails
send ASAP on a 50/50 basis, depending what they feel like doing.

:(

Adam

"Mike TI" <su*******@hotmail.com> wrote in message
news:OH**************@TK2MSFTNGP05.phx.gbl...
Dear Adam Honek

I have encountered the same situation.

I have noticed that my Email Virus Autoprotect is doing this. If I turn
the Autoprotect feature off, I have no problem in sending emails.

Mike TI

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:eA*************@TK2MSFTNGP04.phx.gbl...
Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application
(hence terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous
way so the calling thread isn't blocked. This is when I added the 2nd sub
below

All the code still works but again, it does not send the email unless I
exit the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or
.send() ?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority
As System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub


May 7 '06 #5
Ever find a solution to this? Appears to be related to some type of
anti-virus protection. I'm getting the same thing but am working to find a
workaround. Mine is due to the Norton auto-protection.

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:%2****************@TK2MSFTNGP04.phx.gbl...
Just to add to what I already said.

I put it all in a class module to let it run in its own thread.

The same thing happens. Ie it won't send the email until I terminate the
application.

There are no errors, it's buffering it somewhere but I'm just so confused
where and how. I haven't setup any buffering, it should send ASAP.

Adam

"Adam Honek" <Ad*******@Webmaster2001.freeserve.co.uk> wrote in message
news:eA*************@TK2MSFTNGP04.phx.gbl...
Okay.

This is a little strange but here goes.

I wanted to send emails and hence wrote the first sub below. It worked
however it would NOT send the email UNLESS I closed the application
(hence terminated the main thread).

Wanting to fix this I thought it would work if I do it the asyncrhonous
way so the calling thread isn't blocked. This is when I added the 2nd sub
below

All the code still works but again, it does not send the email unless I
exit the application. It's almost as if its buffering it for some reason.

Shouldn't this just get fired ASAP as soon as I do .sendasync() or
.send() ?????

Very confusing.

Thanks for all feedback,
Adam

************SUB 1****************
Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal
sFromSenderName As String, ByVal sToEmailAddress As String, ByVal
sEmailSubject As String, ByVal sEmailBody As String, ByVal EmailPriority
As System.Net.Mail.MailPriority)

Try

Dim MySMTPClient As New System.Net.Mail.SmtpClient("smtp.realname.net") '

Dim MyEmail As New System.Net.Mail.MailMessage

Dim MyAddressFrom As New System.Net.Mail.MailAddress(sFromEmailAddress,
sFromSenderName)

Dim MyAddressTo As New System.Net.Mail.MailAddress(sToEmailAddress)

'Build the email

MyEmail.From = MyAddressFrom

MyEmail.To.Add(sToEmailAddress)

MyEmail.Subject = sEmailSubject

MyEmail.Body = sEmailBody

MyEmail.Priority = EmailPriority

MyEmail.IsBodyHtml = True

Dim MyMailObject As Object = MyEmail

AddHandler MySMTPClient.SendCompleted, AddressOf SmtpClient_OnCompleted

MySMTPClient.SendAsync(MyEmail, MyMailObject)

MyEmail = Nothing

'If there are any errors catch them

Catch MyException As Exception

MsgBox("The following error occured: " + MyException.Message,
MsgBoxStyle.Critical, "Sending email")

End Try

End Sub

************SUB 2****************

Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As
System.ComponentModel.AsyncCompletedEventArgs)

'Get the Original MailMessage object

Dim mail As System.Net.Mail.MailMessage = CType(e.UserState,
System.Net.Mail.MailMessage)

'write out the subject

Dim subject As String = mail.Subject

If e.Cancelled Then

'They cancelled it last minute

End If

If Not (e.Error Is Nothing) Then

'Explain to the user

Else

MsgBox("The email has been sent", MsgBoxStyle.OkCancel,
Application.ProductName)

End If

End Sub


May 12 '06 #6
Liz

"+Vice" <to******@earthlink.net> wrote in message
news:uZ**************@TK2MSFTNGP04.phx.gbl...
Ever find a solution to this? Appears to be related to some type of
anti-virus protection. I'm getting the same thing but am working to find
a workaround. Mine is due to the Norton auto-protection.


I turned off outbound email scanning in Norton and it still scans anyway; I
do not have to exit the app for a send to be completed but it is deferred
for a minute or two
May 12 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Peter | last post by:
I am trying to send SMTP mail: I have the following code which works fine on one domain, but not on other. It does not work until I remove the...
34
by: antonyliu2002 | last post by:
I've set up the virtual smtp server on my IIS 5.1 like so: 1. Assign IP address to "All Unassigned", and listen to port 25. 2. Access...
9
by: Keith G Hicks | last post by:
I have a vb app that runs on a server. It periodically checks for rows in a table that are ready to have data mailed out to clients. After it finds...
0
by: concettolabs | last post by:
In today's business world, businesses are increasingly turning to PowerApps to develop custom business applications. PowerApps is a powerful tool...
0
by: teenabhardwaj | last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
0
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and...
0
by: CD Tom | last post by:
This happens in runtime 2013 and 2016. When a report is run and then closed a toolbar shows up and the only way to get it to go away is to right...
0
jalbright99669
by: jalbright99669 | last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
0
by: antdb | last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine In the overall architecture, a new "hyper-convergence" concept was...
0
by: Matthew3360 | last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function. Here is my code. ...
1
by: Matthew3360 | last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it...
0
by: AndyPSV | last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.