简体   繁体   中英

Send an email on VB.net

Can anyone help me. I've created a email program. I'm having an error when clicking on the send button. Here's my code:

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

And I've got this error: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name:value at System.Net.Mail.SmtpClient.set_Port(Int32 value)

***Edited forgot to modify it to the original code

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

doesnt run when the form loads.

Because of this port is set to the default value of 0

You need to tell VB.Net to run when the form loads like this

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

Also further on down the code, you might find that you get an error about authentication from the email server. If you get this, just below

Dim smtpServer As New SmtpClient

add this

smtpServer.UseDefaultCredentials = False

it might work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM