>我正在尝试使用邮件系统中的队列来发送多个附件。这个想法是,每次用户附加文件时,文件都会保存到一个变量中,并将该变量推送到队列中。多个附件意味着更大的队列。我假设我可以将队列附加到电子邮件并发送它,但是当我尝试时,我收到错误"(68)类型为'系统.集合.队列'的值无法转换为'系统.Net.Mail.附件'。我该如何解决这个问题?或者是否有其他方法可以发送多个附件?我绝对需要使用队列或堆栈,因为这是一个大学项目,对我来说,使用两者之一至关重要。我已经包含了用户单击"发送邮件"按钮后运行的代码。
If (String.IsNullOrEmpty(ToMail.Text) OrElse RegexClass.MailRegex(ToMail.Text)) Then
MessageBox.Show("Please enter a valid email address")
Else
Try
mail.From = New MailAddress(My.Settings.SaveMailID)
mail.To.Add(ToMail.Text)
mail.Body = MailBody.Text
mail.Subject = MailSubject.Text
mail.Priority = MailPriority.Normal
Dim smtpserver As New SmtpClient(My.Settings.SMTP, My.Settings.Port)
smtpserver.Credentials = New Net.NetworkCredential(My.Settings.SaveMailID, My.Settings.SaveMailPass)
If My.Settings.SMTP = "smtp.gmail.com" And My.Settings.Port = "25" Then
smtpserver.EnableSsl = True
End If
smtpserver.Port = My.Settings.Port
smtpserver.Host = My.Settings.SMTP
If Not Attachbox.Text = Nothing Then
Dim attach As New Attachment(Attachbox.Text)
mail.Attachments.Add(attach)
End If
If Not CCBox.Text = Nothing Then
mail.CC.Add(CCBox.Text)
End If
If Not BCCBox.Text = Nothing Then
mail.Bcc.Add(BCCBox.Text)
End If
smtpserver.Send(mail)
Label7.Show()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
请注意以下关键行:
Dim attach As New Attachment(Attachbox.Text)
mail.Attachments.Add(attach)
您将无法直接附加队列,因为它不是正确的类型(它需要附件对象)。 但是,您可以遍历队列或堆栈,并在循环中使用这两行来创建附件,然后将其添加到附件列表中。
由于这是家庭作业,我试图有些模糊,但如果您有任何其他问题,请告诉我。
下面是附件类上的 MSDN 文档:https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.attachments(v=vs.110).aspx
下面是循环访问队列的示例:
For Each element As String In queue
Console.WriteLine(element)
您将需要执行此操作,而不是写入控制台,而是创建一个附件并将其添加到邮件对象的附件列表中。