无法从“字符串[]”转换为“ System.Net.Mail.Attachment”

时间:2019-01-21 12:02:32

标签: c# visual-studio

我正在尝试将附件添加到通过程序发送的电子邮件中,但出现上述错误。
我要保存在运行时拍摄的图像,并将名称添加到名为ImageFilenames的列表中。然后,我使用下面的代码检索文件并将它们添加为附件,但是我似乎无法弄清楚该工作需要做什么。

            SaveScreenshots();

            using (MemoryStream stream = new MemoryStream())
            {
                using (SmtpClient SmtpServer = new SmtpClient())
                {
                    using (MailMessage mail = new MailMessage())
                    {
                        mail.From = new MailAddress("*****.******@******.com");
                        mail.To.Add("******@*****.com");
                        mail.Subject = this.Summary;
                        mail.Body = this.ToString();

                        SmtpServer.Port = ***;

                        foreach (string file in ImageFilenames)
                        {
                            var images = Directory.GetFiles(file);

                            mail.Attachments.Add(images); 

 //I tried this and the below method with no success

                            mail.Attachments.Add(Directory.GetFiles(file));
                        }

                        SmtpServer.Credentials = new System.Net.NetworkCredential("******@****.com", "********");
                        SmtpServer.EnableSsl = false;
                        SmtpServer.Host = "*****-1";

                        SmtpServer.Send(mail);
                    }
                }
            }
        }
        ClearScreenCaptures();

    }

任何帮助将不胜感激。谢谢!

编辑:感谢您提出建议的相关问题,但是我知道如何添加附件。我的问题特别是如何使用文件名列表来执行此操作。不过谢谢你!

2 个答案:

答案 0 :(得分:0)

Directory.GetFiles(file);

返回一个字符串数组,您需要创建一个Attachment对象。像这样:

var attachment = new Attachment(filePath));

答案 1 :(得分:0)

尝试一下

 Directory.GetFiles(file).ToList()
     .ForEach(t =>  x.Attachments.Add(new Attachment(t)));