从电子邮件中删除选定的附件C#

时间:2018-03-12 18:26:10

标签: c# email attachment delete-file

我正在使用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;
                        }
                    }
                }}                                                           

2 个答案:

答案 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;
                            }
                        }
                    }
}