我正在使用smtp协议编写电子邮件发件人。我使用OpenFileDialog
选择附件,然后在attachmentListBox中显示文件名。
我使用了两个列表来获取文件名和大小。当我在列表框中选择文件名并单击名为" Delete attachment
"应删除MailMessage
中的选定附件,其名称来自attachmentListBox,大小来自sizeListBox。我做了最后两件事,但我不知道如何做第一件事,因为显示错误
(MailMessage始终为空)。
MailMessage msg; //MailMessage is always nul
List<int> sizeAttachement = new List<int>();
List<string> nameAttachement = new List<string>();
if(ofd.ShowDialog()==DialogResult.OK)
{
path = ofd.FileName.ToString();
FileInfo info = new FileInfo(ofd.FileName);
sizeAttachement.Add(Convert.ToInt32(info.Length / (1024 * 1024)));
nameAttachement.Add(ofd.FileName);
}
private void delAtchButton_Click(object sender, EventArgs e)
{
if (attachementListBox.SelectedIndex == -1)
{
}
else
{
ListBox.SelectedObjectCollection selectedItems = new
ListBox.SelectedObjectCollection(attachementListBox);
selectedItems = attachementListBox.SelectedItems;
if (attachementListBox.SelectedIndex != -1)
{
int attachementListBoxindex = attachementListBox.SelectedIndex;
for (int i = selectedItems.Count - 1; i >= 0; i--)
attachementListBox.Items.Remove(selectedItems[i]);
msg.Attachments.RemoveAt(attachementListBoxindex); //Error always occurs
attachementProgressBar.Increment(-sizeAttachement[attachementListBoxindex]);
sizeAttachement.RemoveAt(attachementListBoxindex);
procentage = attachementProgressBar.Value * 4;
procentageLabel.Text = Convert.ToString(procentage) + "%";
for (int z = 0; z <= nameAttachement.Count; z++)
{
foreach (Attachment attachment in msg.Attachments)
{
if (attachment.Name == Convert.ToString(nameAttachement[z]))
{
msg.Attachments.Remove(attachment); //Error to
break;
}
}
}}
答案 0 :(得分:1)
您尚未初始化MailMessage,如:
$ rename -s .jpg.png .png *.jpg.png
答案 1 :(得分:1)
试试这个解决方案。你应该摆脱错误。
MailMessage msg = new MailMessage();
List<int> sizeAttachement = new List<int>();
List<string> nameAttachement = new List<string>();
if(ofd.ShowDialog()==DialogResult.OK)
{
path = ofd.FileName.ToString();
FileInfo info = new FileInfo(ofd.FileName);
sizeAttachement.Add(Convert.ToInt32(info.Length / (1024 * 1024)));
nameAttachement.Add(ofd.FileName);
}
private void delAtchButton_Click(object sender, EventArgs e)
{
if (attachementListBox.SelectedIndex == -1)
{
}
else
{
ListBox.SelectedObjectCollection selectedItems = new
ListBox.SelectedObjectCollection(attachementListBox);
selectedItems = attachementListBox.SelectedItems;
if (attachementListBox.SelectedIndex != -1)
{
int attachementListBoxindex = attachementListBox.SelectedIndex;
for (int i = selectedItems.Count - 1; i >= 0; i--)
{
attachementListBox.Items.Remove(selectedItems[i]);
msg.Attachments.RemoveAt(i); //Error always occurs
attachementProgressBar.Increment(-sizeAttachement[i]);
sizeAttachement.RemoveAt(i);
procentage = attachementProgressBar.Value * 4;
procentageLabel.Text = Convert.ToString(procentage) + "%"; }
for (int z = 0; z <= nameAttachement.Count; z++)
{
foreach (Attachment attachment in msg.Attachments)
{
if (attachment.Name == Convert.ToString(nameAttachement[z]))
{
msg.Attachments.Remove(attachment); //Error to
break;
}
}
}
}