cannot send yahoo email using vb.net - vb.net

I'm working with a program that can send email supporting yahoo mail and gmail. And it works in gmail(if the sender utilizes gmail) But it won't work if the sender is using yahoo mail.
Here is my code:
mail.From = New MailAddress(TextBox2.Text)
mail.To.Add(New MailAddress(TextBox1.Text))
mail.Subject = TextBox4.Text
mail.Body = TextBox4.Text
mail.IsBodyHtml = True
Dim client2 As SmtpClient = New SmtpClient("smtp.mail.yahoo.com", 25)
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587)
client.EnableSsl = True
client.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox3.Text)
Try
client.Send(mail)
Catch ex As Exception
MessageBox.Show("Sending email failed. Please Try again")

Looks like you might be using the wrong port? Try this
Dim client2 As SmtpClient = New SmtpClient("smtp.mail.yahoo.com", 587)
EDIT
OK, that didn't work. Actually, isn't the SMTP address also wrong?
Dim client2 As SmtpClient = New SmtpClient("plus.smtp.mail.yahoo.com", 587)
You could also wrap the whole program in a Try block and catch any SmtpException and write out the special SmtpStatusCode:
Try
' Blah blah '
Catch (SmtpException e)
Console.WriteLine("Error: {0} {1}", e.StatusCode, e.ToString)
End Try

Yahoo uses Port 465 for non-paying users (subscription services).

Related

Sending an email still have an error using VB.Net

I want to send an email when user click btnSubmit. My problem is when I click the btnSubmit it gives me error at Catch ex As Exeption. I'm using Web Form.aspx.vb
Here is my code
Dim mail As MailMessage = New MailMessage
mail.From = New MailAddress("example#gmail.com")
mail.To.Add(New MailAddress("example#gmail.com"))
mail.Subject = "TEST SUBJECT"
mail.Body = "Test Message"
mail.IsBodyHtml = True
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587)
client.EnableSsl = True
Try
client.Send(mail)
MsgBox("Sending Email succeeded") 'Return True if there is nothing error while sending email.
Catch ex As Exception
MsgBox("Sending Email failed. Please try again")
End Try

How to test SMTP connection before SMTPClient.Send [VB.NET]

Pretty new to programming here.
The program I'm currently working on needs to send an email with logs.
Working great if I'm using the right server host but when I'm trying with a "false" server host my program sure can't connect, but it immediatly crash, I can't raise any exception, can't tell the user he's doing something wrong, nothing.
So I guess I have to test the connection before SMTPClient.Send but I can't seem to find how...
How can I test a SMTP Server connection in VB.NET ?
That's what I'm using :
Try
Dim SmtpServer As New SmtpClient()
With SmtpServer
.EnableSsl = False
.UseDefaultCredentials = False
.Credentials = New Net.NetworkCredential(MailUser, MailPassword)
.Port = 25
.Host = ServerAdress
End With
Dim mail As New MailMessage()
With mail
.From = New MailAddress(MailSender)
.To.Add(MailReceiver)
.CC.Add(MailCC)
.Subject = MailObject
.Body = MailBody
End With
SmtpServer.Send(mail)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
1- I think you should try something like this:
Using tcp As New TcpClient
Try
tcp.Connect(ip, 25)
' server found
Catch ex As Exception
' server not found
End Try
tcp.Close()
End Using ' tcpclient
2- For test your smtp server this article can be usefull:
https://www.port25.com/how-to-check-an-smtp-connection-with-a-manual-telnet-session-2/
3- and also there is a smtp test class in this question's answers
.Net TcpClient and SmtpClient won't connect to my Smtp server

Sending Email - VB.Net - Windows Form

I have tried different port numbers but I keep getting the error message and no email sent. I aim to be able to send the email successfully and the message will contain details from an appointment booked. Any help please?
Dim UserName As String = "example#gmail.com"
Dim mail As MailMessage = New MailMessage
mail.From = New MailAddress(UserName)
mail.To.Add(New MailAddress(txtEmailAddress.Text))
mail.Subject = "Appointment Details"
mail.Body = "Test message"
mail.IsBodyHtml = True
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 465)
client.EnableSsl = True
client.Credentials = New System.Net.NetworkCredential(UserName, "***")
Try
client.Send(mail)
Catch ex As Exception
MessageBox.Show("Sending email failed. Please Try again")
End Try
What you need to do is add client.UseDefaultCredentials = False, but make sure you set it to false before calling client.Credentials = New System.Net.NetworkCredential(UserName, "***")
Also, for GMail, you need to use port 587 which is the port that supports the STARTTLS extension (which is the only way that System.Net.Mail.SmtpClient supports SSL).
In other words, change your code to this:
Dim UserName As String = "example#gmail.com"
Dim mail As MailMessage = New MailMessage
mail.From = New MailAddress(UserName)
mail.To.Add(New MailAddress(txtEmailAddress.Text))
mail.Subject = "Appointment Details"
mail.Body = "Test message"
mail.IsBodyHtml = True
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587)
client.EnableSsl = True
client.UseDefaultCredentials = False
client.Credentials = New System.Net.NetworkCredential(UserName, "***")
Try
client.Send(mail)
Catch ex As Exception
MessageBox.Show("Sending email failed. Please Try again")
End Try
Try this,
go to your gmail account (www.gmail.com)
login, and check that you have "enabled Pop for all mail".
you can find this under the tab "Forwarding and POP/IMAP"
Also try switching the port number to 587

can't send Email from Webservice written in vb.net

I wanna send an Email from my Webservice, written in vb.net, but I get an Timeout.
What is wrong?
Dim toaddress As MailAddress = New MailAddress("xxx")
Dim fromaddress As MailAddress = New MailAddress("yyy")
' The structure for MailMessage(from, to)
Dim message As MailMessage = New MailMessage(fromaddress, toaddress)
message.Subject = "I have sent you a message from a program!"
message.Body = "Hello World!"
Dim messanger As SmtpClient = New SmtpClient("smtpxxx", 995)
messanger.Credentials = New NetworkCredential("user", "password")
messanger.EnableSsl = True
messanger.Send(message)
You are doing many things wrong and some of the information you have given are not clear enough. host name and port names have to give properly. it chooses which mail service you are using, from your code it is not correctly provided, so i will give a snippet that uses gmail to send mail. please go through this and make changes as per your SmtpHost.
Try
Dim Smtp_Server As New SmtpClient
Dim e_mail As New MailMessage()
Smtp_Server.UseDefaultCredentials = False
Smtp_Server.Credentials = New Net.NetworkCredential("email", "password")
Smtp_Server.Port = 587
Smtp_Server.EnableSsl = True
Smtp_Server.Host = "smtp.gmail.com"
e_mail = New MailMessage()
e_mail.From = New MailAddress(txtemail.Text)
e_mail.To.Add(txtemail.Text)
e_mail.Subject = "Email Sending"
e_mail.IsBodyHtml = False
e_mail.Body = txtMessage.Text
Smtp_Server.Send(e_mail)
MsgBox("Mail Sent")
Catch error_t As Exception
MsgBox(error_t.ToString)
End Try
This link help you to find the smtp.Server and Port numbers, you can use this thread for check the limitations of smtp.servers

What smtp do I use for email?

I have a basic vb.net windows form application and is wondering how I would go about sending an email? I have no servers set up or anything like that, I was wondering if I could still send it without setting up all that stuff. This is the code I have now:
Private Sub sendEmail(ByVal golfersTable As DataTable)
'create the mail message
Dim mail As New MailMessage()
Dim SMTP As New SmtpClient()
'set the addresses
mail.From = New MailAddress("someone#gmail.com")
mail.To.Add("someone#gmail.com")
'set the content
mail.Subject = "Golf Quotas"
mail.Body = "Golfer Name" & "-----------------------------------------------" & row.Item("Average Quota")
For Each row As DataRow In golfersTable.Rows
mail.Body = row.Item("Golfer Name") & "---------------" & row.Item("Average Quota")
Next
'set the server
SMTP.EnableSsl = True
SMTP.UseDefaultCredentials = False
SMTP.Port = "465"
'SMTP.Send(mail)
Try
SMTP.Send(mail)
MsgBox("Your Email has been sent sucessfully - Thank You")
Catch ex As Exception
MsgBox("Message Failed To Send" & ex.ToString)
End Try
End Sub
I have gotten nothing to work at all from everything that I have tried.... Idk what I'm doing wrong but it's not working. I tried a nslookup www.gmail.com in cammand prompt but it said that domain not found ?
If you are using a GMail account to send the emails then you can use Google's SMTP server, smtp.gmail.com.
More details here:
http://email.about.com/od/accessinggmail/f/Gmail_SMTP_Settings.htm