问题描述
我正在编写一个Outlook Email VB.NET程序,该程序应解析电子邮件,将其放入用于修改各个字段的表单中,然后将邮件和所有修改后的附件保存到文件系统上的目录中。
我需要从包含附件的多行文本框中将值读取到数组中。然后,将它们与Microsoft.Office.Interop.outlook.application.MailItem.Attachment.FileName
值中完整文件名列表中的值进行比较。 每个文件名只能匹配一次。只有文本框中的第一个值可以匹配。值是什么无关紧要,只要它在Microsoft.Office.Interop.outlook.application.MailItem.Attachment.FileName
值中,它就与之匹配而已。
除了我要发布的代码之外,我还尝试了其他方法(例如“ contains”和“ is”)来代替比较,但是除了“ Is”之外,没有任何变化即使是第一次也不匹配。即使其他方法仍然产生相同的结果,该代码也经过了许多修改。
以下是相关代码:
' Dim mailAttachments As Outlook.Attachments = Mail.Attachments
ListBoxAttachmentArray = SaveAttachment_List.Split(Environment.NewLine)
If ListBoxAttachmentArray.Length > 0 Then
For i As Integer = 0 To ListBoxAttachmentArray.Length - 2
StatusBox.Text += Environment.NewLine & "A:" & ListBoxAttachmentArray(i)
For j As Integer = 1 To mailAttachments.Count
' currentAttachment = mailAttachments.Item(j)
StatusBox.Text += Environment.NewLine + ListBoxAttachmentArray(i)
StatusBox.Text += " : " & mailAttachments.Item(j).FileName
StatusBox.Text += Environment.NewLine + " i: " + i.ToString + " j: " + j.ToString
If mailAttachments.Item(j).FileName = ListBoxAttachmentArray(i) Then
StatusBox.Text += Environment.NewLine & "MadeIt: " & mailAttachments.Item(j).FileName
'mailAttachments.Item(j).Save(UsedDir & mailAttachments.Item(j).FileName,True)
End If
Next
Next
End If
这是我的文本框中的三个文件的列表,例如:
image001.jpg Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx BEV-15046A62-A_REV_17.zip
这是我用来跟踪上述代码的状态文本框:
A:image001.jpg image001.jpg : image001.jpg i: 0 j: 1 MadeIt: image001.jpg image001.jpg : Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx i: 0 j: 2 image001.jpg : BEV-15046A62-A_REV_17.zip i: 0 j: 3 A: Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : image001.jpg i: 1 j: 1 Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : Mold RFQ 07162020 IP DriverAccent - Chinstrap.xlsx i: 1 j: 2 Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : BEV-15046A62-A_REV_17.zip i: 1 j: 3 A: BEV-15046A62-A_REV_17.zip BEV-15046A62-A_REV_17.zip : image001.jpg i: 2 j: 1 BEV-15046A62-A_REV_17.zip : Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx i: 2 j: 2 BEV-15046A62-A_REV_17.zip : BEV-15046A62-A_REV_17.zip i: 2 j: 3
在输出中注意“ Made it”。这应该发生3次,但只有在第一次循环匹配时才发生。
我该如何每次都匹配?
解决方法
在比较字符串值之前,应先修剪字符串值以获得准确的结果。
If mailAttachments.Item(j).FileName.Trim() = ListBoxAttachmentArray(i).Trim() Then
StatusBox.Text += Environment.NewLine & "MadeIt: " & mailAttachments.Item(j).FileName
'mailAttachments.Item(j).Save(UsedDir & mailAttachments.Item(j).FileName,True)
End If