[VB.NET 2010] Sending mail only works sometimes
-
Yeah it always works on some machines and never on others. Usefull tips. I'll see what i can do. But the email code itself, is that alright? Im not missing anything? Should i enable ssl? What about credentials/default credentials?
Virtual Space Shuttle Astronaut
I'm not an e-mail expert, so far I get specific problems solved, but I don't have the universal answer (unless it is 42). Your code looks fine to me, however I know there are many things that may interfere, credentials would be one of them. e.g. it may work better (or take less code) when the e-mail client happens to be running. :)
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
-
Maybe adding some credentials would help, it's a common problem.
smtp.Credentials = new System.Net.NetworkCredential(credentialUser, credentialPassword);
Cheers sorry it's C#, translate to VB
If you can read this, you don't have Papyrus installed
-
-
CodeProject even has a smiley for you in your current situation:
: - O
yielding :-OLuc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
-
This code will only work if the computer where it is running can use the port 25. If this port is closed, then it will not work.
Thanks people. One more question: should i use my username and password for credentials or should that be the username and password of the sender? That part confuses me.
Virtual Space Shuttle Astronaut
-
Thanks people. One more question: should i use my username and password for credentials or should that be the username and password of the sender? That part confuses me.
Virtual Space Shuttle Astronaut
the sender's since he is logging into his mail provider, not yours. And he'd normally provide a separate username/password for that particular purpose, as they aren't going to be replaced regularly and really should be independent of his normal, interactive ones. Which is similar to how an app should access a database really. :)
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
-
Thanks people. One more question: should i use my username and password for credentials or should that be the username and password of the sender? That part confuses me.
Virtual Space Shuttle Astronaut
normally the user-name and password for the email account that you will send through
As barmey as a sack of badgers Dude, if I knew what I was doing in life, I'd be rich, retired, dating a supermodel and laughing at the rest of you from the sidelines.
-
normally the user-name and password for the email account that you will send through
As barmey as a sack of badgers Dude, if I knew what I was doing in life, I'd be rich, retired, dating a supermodel and laughing at the rest of you from the sidelines.
Won't DefaultCrendentials be enough then? If i understand correctly, DefaultCrendentials get the username and password of the sender's email client, right? Then there's not need for them to enter it?
Virtual Space Shuttle Astronaut
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
mail is an ugly thing and should be avoided at all costs :) First of: it is highly unreliable. It's not beause it was transferred to the mail server that it will actually ever arive at it's final destination. Secondly, as pointed out by others; the odds that the client machine can actually connect to your mailserver are against you and diminishing every year due to it being such a popular medium to harass people with commercials :) - the client must be connected to the internet - it must be allowed to access your mail server, which on a lan it usually isn't. - Recently a lot of anti-virus software and personal firewalls started blocking programs from sending out mail due to the high number of spambot malware. A better sollution would be to store your bug report locally first and then try to send it to a webserver via http. This method is used by all the big players and preferred over smtp (mail), because : - you have proof of delivery at the client side (so you can keep it stored as long as it was not delivered correctly) - http is more likely to be allowed (outgoing) from a corporate lan. If they can surf the internet, they can send you a bugreport - if antivirus would start blocking programs from using http calls a lot of things wouldn't work any more so chances of that happening in the future are slim. This increases the reliability othis sollution - you have standard sollutions at your disposal to handle this (web services, ajax, etc...)
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
-
Thanks people. One more question: should i use my username and password for credentials or should that be the username and password of the sender? That part confuses me.
Virtual Space Shuttle Astronaut
Further to _Erik_'s message, and by way of an FYI, a lot of ISPs in the UK block access to port 25 other than to their own smtp servers. e.g. I am on O2 broadband and I can NOT run my own smtp server; the only servers I can access via port 25 belong to O2. As you can imagine, this is a measure to stop spam.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
Might be nothing to do with the problems you are having, but worth bearing in mind. I have seen problems with emails not getting through due to a line length limit. Some servers adhere to standards which define a maximum length of 998 characters and will not accept the incoming email.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
Public Function SendMailToDept(ByVal Fromm As String, ByVal Recipient As String, ByVal Cc As String, ByVal Subject As String, ByVal Body As String) As Boolean 'Sending Mail to multiple pepople coading by (Abhishek singh)abhishek_singh156@yahoo.com Dim mailstatus As Boolean = False Try ' Create a New blank MailMessage */ Dim mailMessage As MailMessage = New MailMessage() mailMessage.From = Fromm mailMessage.To = Recipient mailMessage.Cc = Cc 'mailMessage.Bcc = txtBcc.Text; mailMessage.Subject = Subject mailMessage.Body = Body mailMessage.BodyFormat = MailFormat.Html SmtpMail.SmtpServer = "144.1.14.3" (your server path) SmtpMail.Send(mailMessage) mailstatus = True Catch ex As Exception mailstatus = False End Try Return mailstatus End Function Public button_click()--------- Dim subjectmail, strreason as string subjectmail = "Please chek this mail" strreason="Error comes" Dim strmail as string strmail = SendMailToDept(abhisheksingh156@yahoo.com, abhishek_singh156@yahoo.com, abhisheksingh156@gmail.com, subjectmail, strreason) End Sub Thanks & Regards Abhishek Singh TATA STEEL(ITS) Livelihood system abhishek_singh156@yahoo.com 09709109796
-
You didn't miss that, it was VB's mistake not to understand semicolons.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
I had that EXACT same problem a ton of times when we first started using the SMTP libraries... For me, it was only doing it on machines that had Norton or McAfee anti-virus installed. Both of those did real time scanning of e-mail as it was sent out. I'm not sure if it actually "hijacked" the connections or if it blocked those connections so that all mail was forced to route through it's proxy, but as soon as I turned off real time mail scanning, it worked fine every time. Your code looks fine to me. Looks just like what I had when I was running into the same issues. I stripped mine all the way down to the bare minimums for testing.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
One additional gotcha for .Net email: The implementation caches the connection to a specific email server. If the email server bounces or a firewall drops the connection then the next email request will fail with a spurious error. The solution is if an exception occurs, try to send it again, just once.
-
So i have dll project. In its code, i have a bunch of functions i use very often in many of my forms applications. One of them is a Bug Reporter class. When called, a dialog appears with some controls. When the user has filled all the textboxes and made valid combobox selections, you click the Submit button which submits the information to my email address. But this only seems to work sometimes. I can't figure out why. I've made a simple forms application for others to try and test the Bug Reporter. I've posted it on another website and it only seems to work for some of my testers, others get errors. Here are some screenshots: http://entrod.sp-website.net/images/bug.jpg[^] http://img638.imageshack.us/img638/5442/96651911.png[^] So im baffled. What can i do to make this work everytime? I mean, what's the point of having a bug reporter if the bug reporter itself doesn't work properly? :confused: Here my email code, if it's needed:
Private Sub bgwSender_DoWork() Handles bgwSender.DoWork
mErrorOccured = False Try mm = New MailMessage With mm .From = New MailAddress(tbEmail.Text) .To.Add("My email address goes here") .Subject = Me.Text .Body = \_ tbProblem.Text & ControlChars.NewLine & ControlChars.NewLine & \_ "Bug type: " & cbbBugType.SelectedItem & ControlChars.NewLine & \_ "Windows version: " & cbbWindowsVersion.SelectedItem & ControlChars.NewLine .IsBodyHtml = False End With smtp = New SmtpClient smtp.Host = "My SMTP server goes here" smtp.Send(mm) Catch ex As Exception MessageBox.Show(ex.Message) mErrorOccured = True mErrorMessage = ex.ToString End Try End Sub
Virtual Space Shuttle Astronaut
You could something like this: ' This is a action on pushing a button On Error GoTo Err_Knop40_Click Dim stDocName As String Dim stDocOntvanger As String Dim stDocFrom As String Dim stDocCC As String Dim stDocBcc As String Dim stDocOnderwerp As String Dim stDocText As String Dim stDocAfzender As String Dim Naam As String Dim I As Integer Dim strsql As String Dim EMAIL Dim rString As String * 255, sLen As Long, tString As String ' tString = "" sLen = GetUserName(rString, 255) sLen = InStr(1, rString, Chr(0)) ' If sLen > 0 Then ' tString = Left(rString, sLen - 1) ' Else ' tString = rString ' End If Naam = tString stDocName = "Empty_Report" stDocOntvanger = RTrim$(Me.EMAIL-address) stDocOnderwerp = "Subject....... " stDocText = "Hello " & RTrim$(Me.name) & " " & IIf(Left$(Me.subname, 1) = " ", "", RTrim$(Me.etc) & " ") & RTrim$(Me.othername) & "," stDocText = stDocText & vbCrLf & vbCrLf stDocText = stDocText & "With.........." & vbCrLf stDocText = stDocText & "....Greetings" & vbCrLf & vbCrLf stDocAfzender = "Sender......" & vbCrLf & vbCrLf stDocAfzender = stDocAfzender & ".......Website:" & vbTab & "www........" & vbCrLf ProviderIp = "192.168.0.0" ' whatever mailtext = stDocText & stDocAfzender Set EMAIL = CreateObject("cdo.message") Foutje = 0 With EMAIL stdDocFrom = RTrim(Name) & "@........" EMAIL.from = RTrim(Name) & "@........" EMAIL.To = stDocOntvanger EMAIL.CC = "" EMAIL.BCC = RTrim(BCCName) & "@......" 'For BCC purpose in a different folder ' EMAIL.Subject = stDocOnderwerp ' EMAIL.TextBody = mailtext ' Email.AddAttachment "C:\Scripts\Output.txt" ' If you would attachements to it If MsgBox(mailtext, vbOKCancel, "To: " + stDocOntvanger) = vbCancel Then GoTo Afgebroken_Knop40_Click I = 20 DoCmd.Hourglass True EMAIL.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 EMAIL.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ProviderIp EMAIL.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 EMAIL.Configuration.Fields.Update