How do I send a gmail email in vb.net?

前端 未结 6 1552
情书的邮戳
情书的邮戳 2021-01-05 20:49

I want to send an email, but it gives me an error.

I have this code:

Sub sendMail(ByVal title As String, ByVal content As String)
    Dim SmtpServer          


        
相关标签:
6条回答
  • 2021-01-05 21:24

    Change the port to 587. Port 25 does not support SSL.

    0 讨论(0)
  • 2021-01-05 21:26

    I Have written the class which can perform this task easyly.

    Imports System.Net.Mail
    Public Class GGSMTP_GMAIL
        Dim Temp_GmailAccount As String
        Dim Temp_GmailPassword As String
        Dim Temp_SMTPSERVER As String
        Dim Temp_ServerPort As Int32
        Dim Temp_ErrorText As String = ""
        Dim Temp_EnableSSl As Boolean = True
        Public ReadOnly Property ErrorText() As String
            Get
                Return Temp_ErrorText
            End Get
        End Property
        Public Property EnableSSL() As Boolean
            Get
                Return Temp_EnableSSl
            End Get
            Set(ByVal value As Boolean)
                Temp_EnableSSl = value
            End Set
        End Property
        Public Property GmailAccount() As String
            Get
                Return Temp_GmailAccount
            End Get
            Set(ByVal value As String)
                Temp_GmailAccount = value
            End Set
        End Property
        Public Property GmailPassword() As String
            Get
                Return Temp_GmailPassword
            End Get
            Set(ByVal value As String)
                Temp_GmailPassword = value
            End Set
        End Property
        Public Property SMTPSERVER() As String
            Get
                Return Temp_SMTPSERVER
            End Get
            Set(ByVal value As String)
                Temp_SMTPSERVER = value
            End Set
        End Property
        Public Property ServerPort() As Int32
            Get
                Return Temp_ServerPort
            End Get
            Set(ByVal value As Int32)
                Temp_ServerPort = value
            End Set
        End Property
        Public Sub New(ByVal GmailAccount As String, ByVal GmailPassword As String, Optional ByVal SMTPSERVER As String = "smtp.gmail.com", Optional ByVal ServerPort As Int32 = 587, Optional ByVal EnableSSl As Boolean = True)
            Temp_GmailAccount = GmailAccount
            Temp_GmailPassword = GmailPassword
            Temp_SMTPSERVER = SMTPSERVER
            Temp_ServerPort = ServerPort
            Temp_EnableSSl = EnableSSl
        End Sub
        Public Function SendMail(ByVal ToAddressies As String(), ByVal Subject As String, ByVal BodyText As String, Optional ByVal AttachedFiles As String() = Nothing) As Boolean
            Temp_ErrorText = ""
            Dim Mail As New MailMessage
            Dim SMTP As New SmtpClient(Temp_SMTPSERVER)
            Mail.Subject = Subject
            Mail.From = New MailAddress(Temp_GmailAccount)
            SMTP.Credentials = New System.Net.NetworkCredential(Temp_GmailAccount, Temp_GmailPassword) '<-- Password Here
            Mail.To.Clear()
            For i As Int16 = 0 To ToAddressies.Length - 1
                Mail.To.Add(ToAddressies(i))
            Next i
            Mail.Body = BodyText
            Mail.Attachments.Clear()
    
            If AttachedFiles IsNot Nothing Then
                For i As Int16 = 0 To AttachedFiles.Length - 1
                    Mail.Attachments.Add(New Attachment(AttachedFiles(i)))
                Next
            End If
    
            SMTP.EnableSsl = Temp_EnableSSl
            SMTP.Port = Temp_ServerPort
    
            Try
                SMTP.Send(Mail)
                Return True
            Catch ex As Exception
                Me.Temp_ErrorText = ex.Message.ToString
                Return False
            End Try
    
        End Function
    End Class
    

    Its the way, how to use class:

     Dim GGmail As New GGSMTP_GMAIL("MyFromAddress1@gmail.com", "AccPassword", )
    
            Dim ToAddressies As String() = {"ToAddress1@gmail.com", "ToAddress2@gmail.com"}
            Dim attachs() As String = {"d:\temp_Excell226.xlsx", "d:\temp_Excell224.xlsx", "d:\temp_Excell225.xlsx"}
            Dim subject As String = "My TestSubject"
            Dim body As String = "My text goes here ...."
            Dim result As Boolean = GGmail.SendMail(ToAddressies, subject, body, attachs)
            If result Then
                MsgBox("mails sended successfully", MsgBoxStyle.Information)
            Else
                MsgBox(GGmail.ErrorText, MsgBoxStyle.Critical)
            End If 
    

    Hope this helps. Good coding

    0 讨论(0)
  • 2021-01-05 21:31

    Gmail uses SMTP over SSL on port 465.

    Try doing:

    
      Dim SmtpServer As New SmtpClient("smtp.gmail.com", 465)
      ...
      SmtpServer.EnableSsl = True
      ...
    
    0 讨论(0)
  • 2021-01-05 21:40

    Try this - I know it works.

        Dim Mail As New MailMessage
        Dim SMTP As New SmtpClient("smtp.gmail.com")
    
        Mail.Subject = "Security Update"
        Mail.From = New MailAddress("name@gmail.com")
        SMTP.Credentials = New System.Net.NetworkCredential("name@gmail.com", "password") '<-- Password Here
    
        Mail.To.Add(address & "@gmail.com") 'I used ByVal here for address
    
        Mail.Body = "" 'Message Here
    
        SMTP.EnableSsl = True
        SMTP.Port = "587"
        SMTP.Send(Mail)
    
    0 讨论(0)
  • 2021-01-05 21:46

    There is some problem with google account, you need to switch off some security settings. After sending email over and over, I received email on one of my support account (for google), the email were:

    You recently changed your security settings so that your Google Account [trdjoko@gmail.com] is no longer protected by modern security standards. 
    
    If you did not make this change 
    Please review your Account Activity page at https://security.google.com/settings/security/activity to see if anything looks suspicious. Whoever made the change knows your password; we recommend that you change it right away. 
    
    If you made this change 
    Please be aware that it is now easier for an attacker to break into your account. You can make your account safer again by undoing this change at https://www.google.com/settings/security/lesssecureapps then switching to apps made by Google such as Gmail to access your account.   
    Sincerely,
    The Google Accounts team 
    

    So I switched of additional security and i worked fine.

    0 讨论(0)
  • 2021-01-05 21:47

    A super easy way of doing this(without changing any security settings) is by using IFTTT and my IFTTT Maker.net libary

    First, in IFTTT create a new recipe that's triggered by the Maker channel and name the event "send_gmail".

    Then, select the Gmail engine and click "Send an email", and replace To with {{value1}}, subject with {{value2}} and message/body with {{value3}}

    After that, in Visual studio, add ifttt.vb to your project. Now for the code:

          Try
        makechannel.scode = "your account ID"
        makechannel.fireevent("send_gmail", "TO", "SUBJECT", "MESSAGE")
       'code goes here if done
        Catch ex As Exception
            'code goes here if it fails
        End Try
    

    Then fill in your account ID. You can find it at ifttt.com/maker

    And that's it!

    0 讨论(0)
提交回复
热议问题