|
You didn't miss that, it was VB's mistake not to understand semicolons.
|
|
|
|
|
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
|
|
|
|
|
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.
|
|
|
|
|
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
|
|
|
|
|
I don't know anything about the language any more, but I despise Outlook with a passion, and Thunderbird is a long forgotten memory, so I have no "default credentials" that I know of on file... Could that not be the promble?
|
|
|
|
|
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.
|
|
|
|
|
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...)
|
|
|
|
|
Your code looks fine. My suggestion is, try to assign Body content in a string and assign to .Body. I had similar problem years ago (in CDONT) and it resolved when I changed this way. Since then I am always careful. Hope this helps.
|
|
|
|
|
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.
|
|
|
|
|
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
|
|
|
|
|
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.
|
|
|
|
|
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.
|
|
|
|
|
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
EMAIL.Send
DoCmd.Hourglass False
If Foutje = 0 Then
test = MsgBox("The mail is correct send in name of " & Name & " = " & RTrim(Name) & "@..........", vbInformation, vbOKOnly)
End If
End With
Exit_Knop40_Click:
Set EMAIL = Nothing
DoCmd.GoToRecord , , acNext
Exit Sub
Afgebroken_Knop40_Click:
test = MsgBox("The mail is not send in name of " & Name & " = " & RTrim(Name) & "@.........", vbOKOnly)
GoTo Exit_Knop40_Click
Err_Knop40_Click:
Foutje = Err.Number
Select Case Foutje
Case -2147220973
test = MsgBox("No connection with the mailserver." & vbCr & "Errornumber: -2147220973", vbCritical, vbOKOnly)
Case -2147220975
test = MsgBox("Wrong or silly answer from the mailserver." & vbCr & "Errornumber: -2147220975", vbCritical, vbOKOnly)
Case -2147220977
test = MsgBox("Mailaddress doesn't excist." & vbCr & "Errornumber: -2147220977", vbCritical, vbOKOnly)
Case 3075
test = MsgBox("SQL error occurred." & vbCr & "Errornumber: " & Str(Foutje), vbOKOnly)
Case Else
test = MsgBox("Unknown error occurred." & vbCr & "Errornumber: " & Str(Foutje), vbOKOnly)
End Select
Resume Next
.......
Maybe it was some help
|
|
|
|
|
Long time lurker, first time poster...
Ok, going to do a bit of a sum up here.
The issues you are seeing are most likey caused by a firewall on the user side, either on the machine or their ISP. A lot of ISP's won't allow residental users to send email out on port 25. Since you don't know what port is allowed, you'd have to have the user configure your app. Not a good idea. Or it could be a local firewall blocking the message because it doesn't know your app is allowed to send. Again, a configuration by your user would need to occur, and again, not a great idea, especially if you don't like support calls.
I'm with those that think it's a bad idea to use an SMTP transport to send an error message for an app outside of your network (we use smtp extensively inside our network), mainly because of security concerns. The username/password combo is used to authenticate a relay of the email message. This is bad to use outside of your network because someone could reverse engineer your code, find the username and password and start spamming through your mail server. If you insist on using SMTP, I would do a TRY CATCH to make sure the app can handle its own error and maybe set a counter to try more then once, then give up. You would also create a text file that you could have the user send to you as a backup.
If I was doing this, I'd probably look at creating a web service that the client app can send the message to and have it then emailed to me and/or inserted into a database. The issue there might be that the user has to approve the outbound request, but that shouldn't be too big of a deal. If you need a web service sample, let me know.
Cheers,
Mike
|
|
|
|
|
Meh, im really lost now. What to do? Keep trying and use the code others kindly provided in the thread, or drop bug reporting via email completely and try http/web service instead. I don't know anything about http servers and web services so yes, a sample would be nice.
Also, i don't feel like adding my username and password into my code as it can be retrieved from the compiled exe.
Virtual Space Shuttle Astronaut
|
|
|
|
|
Forget the email.
You're (incorrectly) assuming that all your users have access to an unprotected smtp server, and that they have configured this server correctly.
This will not be true:
- in corporate environments, where exchange or lotus notes rule, and any good sysadmin will block access to the corporate smtp servers.
- if the user uses some form of webmail (gmail, hotmail, yahoo), and hasn't setup a local mail client.
You may want to setup an smtp server for these users, which you would run yourself, but I would strongly advise against it. You would be creating an open smtp relay that would attract spammers, and will get you blacklisted on smtp relays worldwide. Furthermore, most corporate environments and some ISP's block SMTP traffic.
Much better to report through some kind of webservice. If you're new to this, a good place to start reading is WCF (Windows Communication Foundation).
Note that you will need a fixed IP address at your side of the deal, and that you will have to configure routers, firewalls, and web servers. If you can't easily get a fixed IP address, you may be able to get away with some with some free dynamic DNS provider.
If this all sounds horrible complicated, get yourself a cheap asp.net provider, and host your error reporting code there.
|
|
|
|
|
What version of VS are you writing your code in? It will help me get you going in the right direction. Also, do you have access to a windows hosting provider or would you try and host this yourself?
Sorry if any of this is causing more confusion, but I think you'll be better off in the long run.
Mike
|
|
|
|
|
Im using Visual Studio 2010.
My host is using Linux systems to host its sites, so ASP and ASP.Net is a no-go.
Thanks for helping me, Mike.
Virtual Space Shuttle Astronaut
|
|
|
|
|
it never needs your username/password; it needs to log into the sender's email service, not yours.
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.
|
|
|
|
|
No i mean the username/password to access my http server.
Virtual Space Shuttle Astronaut
|
|
|
|
|
It does not necessarily require user name/password. All you need to know on the server is: who and when the report was sent and what does the report say.
You could implement some sort of hash to filter out spam traffic at http end.
If ASP/.Net is no go and you have PHP skills, you can rustle up a simple form to accept the above information on your website. *Then* you could send an email or insert into database or whatever from the webserver.
You could then submit this form from your desktop application code.
It does seem daunting at first for a bug reporting mechanism - but this is a much reliable approach than trying to send the email.
Hope this helps.
Shreekar
|
|
|
|
|
No i do not have PHP skills, but i figure it would'nt be that hard to make an online form for the bug reporting?
Im also waiting for Mike's example.
Virtual Space Shuttle Astronaut
|
|
|
|
|
Sorry I was slow at getting back to you. Got sidetracked with my project and then it was all downhill from there.
I'm assuming you are still looking for some sort of solution to this. Are you interested in a method to create an execption report that can be emailed to you, or post to a web page?
Mike
|
|
|
|
|