Как передать имена файлов arraylist в filepaths и отправить во вложении электронной почты? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть несколько изображений в папке, но я хочу, чтобы некоторые изображения отправлялись во вложении. У меня есть arraylist, который содержит имена файлов, и я хочу передать эти arraylist элементы в filepaths, но это не работает. filess являются не доступно вне цикла. Пожалуйста, помогите мне, Спасибо

myMail.Subject = pSubject;
myMail.Body = "Hi ,your event ID is " + pBody;
string[] filePaths = Directory.GetFiles(@"D:\test");
ArrayList list = new ArrayList(27);
list.Add ("12");
list.Add ("1288");
list.Add("1232");
list.Add("1222");
list.Add("1099");

foreach (string listitem in list )
{
 var filess = filePaths.Where(x => 
                  Path.GetFileName(x).Contains(listitem));
}

// Loop through the files enumeration and attach each file in 
//the mail.
foreach (var file in filess)
{
    var attachment = new 
    System.Web.Mail.MailAttachment(file);
    myMail.Attachments.Add(attachment);
}

System.Web.Mail.SmtpMail.SmtpServer = 
"smtp.gmail.com:465";
System.Web.Mail.SmtpMail.Send(myMail);

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете проверить мой ответ здесь для полного фрагмента для отправки почты с вложением.Но вот код для чтения всех файлов в папке и добавления их в качестве вложения.Бу файлы должны находиться в корневой папке сайта!

//find all files in a directory relative to the root folder of the website
string[] files = Directory.GetFiles(Server.MapPath("/images"));

//loop all files in an directory
foreach (var file in files)
{
    //add the file from the fileupload as an attachment
    var stream = new FileStream(file, FileMode.Open);
    message.Attachments.Add(new Attachment(stream, Path.GetFileName(file)));
}
...