在 VB 中使用队列的邮件附件

Mail attachment using queue in VB

我正在尝试在我的邮件系统中使用队列来发送多个附件。 这个想法是,每次用户附加文件时,文件都会保存到一个变量中,然后将该变量推送到队列中。多个附件意味着更大的队列。我假设我可以将队列附加到电子邮件并发送它,但是当我尝试这样做时,我收到错误消息“(68) 'System.Collections.Queue' 类型的值无法转换为 'System.Net.Mail.Attachment'。” 我怎样才能解决这个问题?或者有没有其他方法可以发送多个附件?我绝对需要使用队列或堆栈,因为这是一个大学项目,我必须使用两者之一。我包含了在用户单击 'send 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)

您将无法直接附加 Queue,因为它不是正确的类型(它需要一个 Attachment 对象)。但是,您可以遍历队列或堆栈并在循环中使用这两行来创建附件,然后将其添加到附件列表中。

由于这是家庭作业,我试图表达得有些模糊,但如果您有任何其他问题,请告诉我。

附件 class 中有一份 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)

您需要这样做而不是写入控制台,而是创建一个附件并将其添加到邮件对象的附件列表中。