【问题标题】:Sendmail Function in vb.netvb.net 中的发送邮件功能
【发布时间】:2026-02-17 10:20:04
【问题描述】:

我有一个使用 gmail 的 sendmail 程序,它可以正常发送邮件。我有一个将路径添加到文本框的文件浏览器对话框。如何将该文本框值添加为附件?代码如下:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Recipients As New List(Of String)
    Recipients.Add("test@yahoo.com")
    Dim FromEmailAddress As String = Recipients(0)
    Dim Subject As String = "IT Help!"
    Dim Body As String = TextBox1.Text
    Dim UserName As String = "test"
    Dim Password As String = "test"
    Dim Port As Integer = 587
    Dim Server As String = "smtp.gmail.com"
    Dim Attachments As New List(Of String)
    MsgBox(SendEmail(Recipients, FromEmailAddress, Subject, Body, UserName, Password, Server, Port, Attachments))
End Sub

Function SendEmail(ByVal Recipients As List(Of String), _
                  ByVal FromAddress As String, _
                  ByVal Subject As String, _
                  ByVal Body As String, _
                  ByVal UserName As String, _
                  ByVal Password As String, _
                  Optional ByVal Server As String = "smtp.gmail.com", _
                  Optional ByVal Port As Integer = 587, _
                  Optional ByVal Attachments As List(Of String) = Nothing) As String
    Dim Email As New MailMessage()
    Try
        Dim SMTPServer As New SmtpClient
        For Each Attachment As String In Attachments
            Email.Attachments.Add(New Attachment(Attachment))
        Next
        Email.From = New MailAddress(FromAddress)
        For Each Recipient As String In Recipients
            Email.Bcc.Add(Recipient)
        Next
        Email.Subject = Subject
        Email.Body = Body
        SMTPServer.Host = Server
        SMTPServer.Port = Port
        SMTPServer.Credentials = New System.Net.NetworkCredential(UserName, Password)
        SMTPServer.EnableSsl = True
        SMTPServer.Send(Email)
        Email.Dispose()
        Return "Email to Derek was successfully sent."
    Catch ex As SmtpException
        Email.Dispose()
        Return "Sending Email Failed. Smtp Error."
    Catch ex As ArgumentOutOfRangeException
        Email.Dispose()
        Return "Sending Email Failed. Check Port Number."
    Catch Ex As InvalidOperationException
        Email.Dispose()
        Return "Sending Email Failed. Check Port Number."
    End Try
End Function

Private Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click
    If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
        TextBox2.Text = OpenFileDialog1.FileName
    End If
End Sub

【问题讨论】:

    标签: vb.net sendmail


    【解决方案1】:

    想通了:

    Dim attachment As System.Net.Mail.Attachment
                attachment = New System.Net.Mail.Attachment("C:\Users\fakeout\Desktop\test.txt")
                Email.Attachments.Add(attachment)
    

    【讨论】: