如何在vb.net中发送附件的电子邮件?

时间:2009-12-26 02:57:48

标签: vb.net email-integration

怎么做?这是我目前的代码,这是一个Windows窗体:

    mail.From = New MailAddress(TextBox2.Text)
    mail.To.Add(New MailAddress(TextBox1.Text))
    mail.Subject = TextBox3.Text
    mail.Body = TextBox4.Text



    mail.IsBodyHtml = True


    Dim client As SmtpClient = New SmtpClient("smtp.gmail.com")
    client.EnableSsl = True
    client.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox5.Text)


    Try
        client.Send(mail)
    Catch ex As Exception
        MessageBox.Show("Sending email failed. Please Try again")


    End Try

3 个答案:

答案 0 :(得分:8)

Here是一个很好的例子

Public Sub SendMailOneAttachment(ByVal From As String, _
      ByVal sendTo As String, ByVal Subject As String, _
      ByVal Body As String, _
      Optional ByVal AttachmentFile As String = "", _
      Optional ByVal CC As String = "", _
      Optional ByVal BCC As String = "", _
      Optional ByVal SMTPServer As String = "")

        Dim myMessage As MailMessage

        Try
            myMessage = New MailMessage()
            With myMessage
                .To = sendTo
                .From = From
                .Subject = Subject
                .Body = Body
                .BodyFormat = MailFormat.Text
                'CAN USER MAILFORMAT.HTML if you prefer

                If CC <> "" Then .Cc = CC
                If BCC <> "" Then .Bcc = ""

                If FileExists(AttachmentFile) Then _
                 .Attachments.Add(AttachmentFile)

            End With

            If SMTPServer <> "" Then _
               SmtpMail.SmtpServer = SMTPServer
            SmtpMail.Send(myMessage)

        Catch myexp As Exception
            Throw myexp
        End Try

    End Sub

Public Sub SendMailMultipleAttachments(ByVal From As String,_
    ByVal sendTo As String, ByVal Subject As String, _
    ByVal Body As String, _
    Optional ByVal AttachmentFiles As ArrayList = Nothing, _
    Optional ByVal CC As String = "", _
    Optional ByVal BCC As String = "", _
    Optional ByVal SMTPServer As String = "")

        Dim myMessage As MailMessage
        Dim i, iCnt As Integer

        Try
            myMessage = New MailMessage()
            With myMessage
                .To = sendTo
                .From = From
                .Subject = Subject
                .Body = Body
                .BodyFormat = MailFormat.Text
                'CAN USER MAILFORMAT.HTML if you prefer

                If CC <> "" Then .Cc = CC
                If BCC <> "" Then .Bcc = ""

                If Not AttachmentFiles Is Nothing Then
                    iCnt = AttachmentFiles.Count - 1
                    For i = 0 To iCnt
                        If FileExists(AttachmentFiles(i)) Then _
                          .Attachments.Add(AttachmentFiles(i))
                    Next

                End If

            End With

            If SMTPServer <> "" Then _
              SmtpMail.SmtpServer = SMTPServer
            SmtpMail.Send(myMessage)


        Catch myexp As Exception
            Throw myexp
        End Try
    End Sub

    Private Function FileExists(ByVal FileFullPath As String) _
     As Boolean
        If Trim(FileFullPath) = "" Then Return False

        Dim f As New IO.FileInfo(FileFullPath)
        Return f.Exists

    End Function

答案 1 :(得分:3)

请参阅此示例:

http://msdn.microsoft.com/en-us/library/system.net.mail.attachment.aspx

基本上,你需要添加这样的东西:

Dim file as string = "c:\Documents\MyFile.txt"
''// Create  the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
''// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
''// Add the file attachment to this e-mail message.
message.Attachments.Add(data);

答案 2 :(得分:1)

重要处置文件!

    Dim smtp As New System.Net.Mail.SmtpClient
    smtp.Host = "host"
    smtp.Port = 25
    smtp.EnableSsl = False
    Dim mMail As New System.Net.Mail.MailMessage()
    mMail.[To].Add("nameTo@mail.com")
    mMail.From = New System.Net.Mail.MailAddress("nameFrom@mail.com", "", System.Text.Encoding.UTF8)
    mMail.Subject = mailSubject
    mMail.Body = mailBody
    Dim fileTXT as String = "c:\file1234.txt" 
    Dim data As Net.Mail.Attachment = New Net.Mail.Attachment(fileTXT)
    data.Name = "file.txt"
    mMail.Attachments.Add(data)
    Try
        smtp.Send(mMail)
        data.Dispose()
        Return True
    Catch ex As System.Net.Mail.SmtpException
        Return False
    End Try