2016-03-12 2 views
0

Может кто-нибудь мне помочь. Я создал программу электронной почты. У меня ошибка при нажатии кнопки отправки. Вот мой код:Отправить электронное сообщение на VB.net

Imports System.Net.Mail 

Public Class frmEmail 
Dim emailaddress As String 
Dim password As String 
Dim port As Integer 
Dim host As String 

Private Sub frmEmail_Load(sender As Object, e As EventArgs) 

If emailaddress.ToLower.Contains("@gmail") Then 
     port = 587 
     host = "smtp.gmail.com" 
    ElseIf emailaddress.ToLower.Contains("@yahoo") Then 
     port = 465 
     host = "smtp.mail.yahoo.com" 
    End If 

End Sub 

Private Sub btnSend_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSend.Click 
    Try 
     Dim smtpServer As New SmtpClient 
     Dim mail As New MailMessage() 
     smtpServer.Credentials = New Net.NetworkCredential(emailaddress, password) 
     smtpServer.Port = port 
     smtpServer.Host = host 
     smtpServer.EnableSsl = True 
     mail = New MailMessage() 
     mail.From = New MailAddress(emailaddress) 
     mail.To.Add(txtTo.Text) 
     mail.Subject = txtSubject.Text 
     mail.Body = txtMessage.Text 
     smtpServer.Send(mail) 
     MsgBox("The mail is send!", MsgBoxStyle.Information) 
    Catch error_t As Exception 
     MsgBox(error_t.ToString) 
    End Try 
End Sub 
End Class 

И я получил эту ошибку: System.ArgumentOutOfRangeException: Указанный аргумент был вне диапазона допустимых значений. Имя параметра: значение в System.Net.Mail.SmtpClient.set_Port (значение Int32)

*** Edited забыл изменить его к исходному коду

+0

Я попытался отправить с помощью Google –

+0

Я загружаю значение из базы данных –

ответ

-1

Ваш суб Private Sub frmEmail_Load (отправитель As Object , e As EventArgs)

не работает, когда форма загружается.

Из-за этого port устанавливается значение по умолчанию 0

Вы должны сказать VB.Net бежать, когда форма загружается как этот

Private Sub frmEmail_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

Также далее вниз код, вы может обнаружиться, что вы получаете сообщение об аутентификации с сервера электронной почты. Если вы получите это, чуть ниже

Dim smtpServer As New SmtpClient 

добавить этот

smtpServer.UseDefaultCredentials = False 

это могло бы работать.

+0

Я сделал то, что вы сказали, но все еще не работает. Я все еще получил эту ошибку: System.ArgumentOutOfRangeException: Указанный аргумент вышел за пределы допустимых значений. Имя параметра: значение в System.Net.Mail.SmtpClient.set_Port (значение Int32) –

+0

ОК. Установите точку останова в этой строке ..... smtpServer.Host = host .... Запустите программу и, когда она сломается, наведите указатель мыши на переменную порта в строке выше, чтобы узнать, для чего установлено значение. Дай мне знать. –

+0

будет заботиться о нижестоящем? –

Смежные вопросы