3

我有这个问题的代码:

使用 Memory Stream 生成 PDF 文件作为 system.net.mail.attachment

帮助我在内存中创建电子邮件附件。

Imports System.IO
Imports System.Net.Mail
Imports System.Text.ASCIIEncoding
Imports System.net.Mime

Public Sub SendMail(ByVal att As String, Optional ByVal filename As String _
    = "Attachment.csv")

    Dim sendMail As New SmtpClient
    Dim mail As New MailMessage

    Using MemoryStream = New MemoryStream

        If att.Length <> 0 Then

            Dim data As Byte() = ASCII.GetBytes(att)

            MemoryStream.Write(data, 0, data.Length)
            MemoryStream.Seek(0, SeekOrigin.Begin)
            MemoryStream.Position = 0

            Dim content As New Net.Mime.ContentType()

            content.MediaType = MediaTypeNames.Application.Octet
            content.Name = filename

            Dim Attach As Attachment
            Attach = New Attachment(MemoryStream, content)
            mail.Attachments.Add(Attach)
        End If

        sendMail.DeliveryMethod = SmtpDeliveryMethod.Network
        sendMail.Host = "SERVER"
        sendMail.UseDefaultCredentials = False

        sendMail.Credentials = New System.Net.NetworkCredential("UN", "PW")
        sendMail.Send(mail)
    End Using
End Sub

我收到此错误:

重载解析失败,因为没有缩小转换就无法调用可访问的“新”:

'Public Sub New(contentStream As System.IO.Stream, contentType As System.Net.Mime.ContentType)':参数匹配参数 'contentStream' 从 'Object' 缩小到 'System.IO.Stream'。

'Public Sub New(fileName As String, contentType As System.Net.Mime.ContentType)':参数匹配参数 'fileName' 从 'Object' 缩小到 'String'。

Dim Attach As Attachment
Attach = New Attachment(MemoryStream, content)

在这条线上。

我怎样才能解决这个问题?

4

2 回答 2

3

在您的 Using 语句中,您将名为 MemoryStream 的变量初始化为 Object 而不是 MemoryStream。

尝试将您的 Using 语句从

Using MemoryStream = New MemoryStream

Using MemoryStream As New MemoryStream
于 2012-10-22T12:23:25.343 回答
3

或使用这个

Using MemoryStream As MemoryStream = new MemoryStream()
于 2012-10-22T12:59:40.093 回答